What is a good way to extend .Net Membership to track user logins

前端 未结 2 771
猫巷女王i
猫巷女王i 2020-12-21 23:28

As far as I can tell, the basic implementation of .Net membership records lastuserlogin but does not track each login, something I need to do now. I\'ve done some research

相关标签:
2条回答
  • 2020-12-21 23:51

    We simply created a class that extends the SqlMembershipProvider, overriding the ValidateUser method to perform whatever extra logic we want. (You just need to change the <membership> section of your web.config file to use this new membership provider).

    Edit

    There's really not much to it. You create a table in your schema that refers to the Guid-based user ID in the standard membership tables. You create a class to manage interaction with this table. You create your membership provider:

    public class MyMembershipProvider : SqlMembershipProvider
    {
        public override bool ValidateUser(string username, string password)
        {
            bool validated = base.ValidateUser(username, password);
            if (validated) 
            {
                MembershipUser user = GetUser(username, false); // built in to SqlMembershipProvider
                new LoginTracker().RegisterLogin((Guid)user.ProviderUserKey);
            }
            return validated;
        }
    }
    

    Then you register this provider in web.config:

    <membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="60">
      <providers>
        <clear/>
        <add name="MyMembershipProvider" ... type="MyAssembly.MyNamespace.MyMembershipProvider, MyAssembly"/>        
      </providers>
    </membership>
    

    Simple!

    0 讨论(0)
  • 2020-12-21 23:52

    You will need to implement a custom memberhsip provider. Take a look at this: http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

    0 讨论(0)
提交回复
热议问题