有什么好办法可以扩展.Net会员制来跟踪用户的登录情况?

 2023-02-16    307  

问题描述

据我所知,.NET成员资格记录LastUserlogin的基本实现,但不跟踪每个登录,我现在需要做的事情.我已经完成了一些研究,我很确定一种方法是创建一个自定义类,将当前提供程序扩展到此功能,并将事件表添加到模式以记录每个登录.

我已经看到了一些关于这个的文章 – 最接近的可能是来自scott mitchell http://dotnetslackers.com/articles/aspnet/tracking-user-activity.aspx 但它是从2008年11月开始,如果有人能指向更好的解决方案或确认这一点,我很好奇仍然是解决这个问题的”最好”.我想象这是一个相当普遍的要求.我仍然在.NET上升起(使用C#)所以任何和所有信息都将非常欣赏.

有什么好办法可以扩展.Net会员制来跟踪用户的登录情况?

编辑

进展,但不完全在那里.我添加了以下代码以在登录活动表中创建新记录:

if (Request.IsAuthenticated)
        {
            MembershipUser currentUser = Membership.GetUser(false);
            string App1 = Membership.Provider.ApplicationName;
            string username = currentUser.UserName;
            object guid1 = currentUser.ProviderUserKey;
            aspnet_CustomActivity login = new aspnet_CustomActivity
            {
                UserId = (Guid) guid1,
                ActivityID = 1, //login
                DateTime = dt1,
                ApplicationName = App1                   
            };
            db.aspnet_CustomActivities.InsertOnSubmit(login);
            db.SubmitChanges();
        }

所以我有一个小问题,我注意到applicationname是空白的,当我尝试在web.config中将它更改它时,它导致了一个错误获取普照列命令但我想我觉得我可以解决它.

现在我需要做的是要完成的是将此与登录页面绑定到登录页面,我认为我可以根据下面的提示进行.完成后,我会在完成答案时发布.

推荐答案

我们只是创建了一个扩展SqlMembershipProvider的类,覆盖ValidateUser方法以执行我们想要的额外逻辑. (您只需要更改Web.config文件的<membership>部分以使用此新会员提供程序).

编辑

对此真的没有太大的.您在架构中创建一个表,从而指的是标准隶属表中的Guid基于用户ID.您创建一个类来管理与此表的交互.您创建会员提供者:

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

然后您在web.config中注册此提供程序:

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

简单!

其他推荐答案

您需要实现自定义成员HSIP提供程序.看看这个: http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx

以上所述是小编给大家介绍的有什么好办法可以扩展.Net会员制来跟踪用户的登录情况?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33859.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。