2016-10-04 1 views
1

Ich versuche, das Login-Ereignis von Umbraco Benutzer (Login im CMS) zu fangen.Umbraco :: Catching oder Extending Benutzer Login

Ich habe versucht, von MembersMembershipProvider zu erweitern und überschreiben die ValidateUser Methode. Ich änderte auch die web.config, um meine Klasse zu verwenden. Wenn ich einen Haltepunkt in diese überarbeitete Methode einfüge, stoppt es nicht und meldet den Benutzer wie gewöhnlich an.

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

Vielen Dank im Voraus.

+0

Huhu, Sie stört mich nicht fragen, aber warum müssen Sie dieses Ereignis zu fangen? –

+0

Die Website, an der ich gerade arbeite, hat derzeit ein vollständig geschütztes Frontend und die Umbraco-Anmeldung, und mein Ziel ist es, den Benutzer im Frontend einzuloggen, sobald sich jemand in der Umbraco anmeldet. Weil ich weiß, dass wenn Sie umbraco Anmeldeinformationen haben, Sie die Website sehen dürfen. –

Antwort

0

Ich habe eine ähnliche Situation. Das hat für mich in Umbraco 7.6.5 funktioniert. Ich weiß, es ist nicht elegant. Es ist nur eine Umgehungslösung:

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 
         } 
        } 
       } 
      } 
     } 

    } 
}