2016-10-04 3 views
1

Umbraco 사용자의 로그인 이벤트를 잡으려고합니다 (CMS 로그인).Umbraco :: 사용자 로그인 잡기 또는 확장

MembersMembershipProvider에서 연장하려고 시도했으며 ValidateUser 메서드를 재정의했습니다. 또한 클래스를 사용하도록 web.config를 변경했습니다. 내가이 오버런 된 메소드에 중단 점을 넣었을 때 평소와 같이 사용자를 중지하고 로그인하지 않습니다.

public class CustomUmbracoMembershipProvider : Umbraco.Web.Security.Providers.UsersMembershipProvider 
{ 
    public override bool ValidateUser(string username, string password) 
    { 
     return base.ValidateUser(username, password); 
    } 
} 

미리 감사드립니다.

+0

나는 당신에게 내가 묻는 것을 꺼리지 만 왜 그 이벤트를 잡아야합니까? –

+0

현재 작업하고있는 웹 사이트에는 현재 완전히 보호 된 프론트 엔드와 umbrac 로그인이 있습니다. 내 목표는 누군가가 umbraco에 로그인 할 때마다 프론트 엔드에 사용자를 로그인하는 것입니다. 당신이 umbraco 자격 증명을 가지고 있다면 웹 사이트를 볼 수 있다는 사실을 알고 있기 때문입니다. –

답변

0

Umbraco 백엔드는 최신 버전의 버전에서 ASP.NET ID를 사용하기 때문에 사용중인 정확한 버전을 묻는 것과 관련있을 수 있습니다.

나는 ASP.NET 신원 당신이 시도 할 수있는 OnLoggedIn 이벤트 있다고 생각 : https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.login.onloggedin.aspx

을하지만 링크가 현재 100 % 확실하지 않다.

+0

Umbraco 7.4.3을 사용하고 있습니다. –

0

비슷한 상황이 있습니다. 이것은 Umbraco 7.6.5에서 저에게 효과적이었습니다. 나는 그것이 우아하지 않다는 것을 안다. 이는 단지 일시적인 해결책 일뿐입니다 :

public class MyCustomEvents: ApplicationEventHandler 
{ 
    protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) 
    { 
     base.ApplicationStarted(umbracoApplication, applicationContext); 
     UserService.SavedUser += UserServiceSaved; 
    } 

    private void UserServiceSaved(IUserService sender, SaveEventArgs<IUser> e) 
    { 
     foreach(IUser user in e.SavedEntities) 
     { 
      if (!user.IsNewEntity()) //Is not creating a new user 
      { 
       IUser alreadyLoggedUser = UmbracoContext.Current.Security.CurrentUser; 
       if (alreadyLoggedUser == null) //Is not a user management via backoffice 
       { 
        if (user.FailedPasswordAttempts == 0) //Is a successful login? 
        { 
         DateTime justNow = DateTime.Now.AddSeconds(-5); 
         if (user.LastLoginDate.CompareTo(justNow) >= 0) //Logged in just now? 
         { 
          //Do your stuff 
         } 
        } 
       } 
      } 
     } 

    } 
}