我有一个名为users
的SQL Server 2008表,用于存储用户详细信息。我有一个aspx页面,用户登录后会被重定向。
如何在不更新此表的情况下找到当前已登录用户详细信息的用户列表?我是否需要一个单独的表来维护登录历史记录?
有人建议我使用ASp.net会员和角色功能。通过使用这个我怎么能找到登录用户的列表?即,在线用户和离线用户?
答案 0 :(得分:1)
这不是您在SQL服务器端需要做的事情 - 最常见的方法是使用Session对象并在Global.asax的Session_Start
和Session_End
事件中编写代码。
这个问题的答案将是一个很好的起点:asp.net visitors count (online users) for today-yesterday in .net 4
编辑:要在评论后添加此内容,为此,我建议使用SQL Server成员资格提供程序并从会话ID中派生用户列表。
如果您想使用自己的(自定义)用户/登录架构执行此操作,则需要在每次登录时添加一列来编写会话ID,然后在会话过期时将其删除,再次制作使用Session_Start
和Session_End
事件。
但是我强烈建议你使用.NET Membership,因为你可能最终通过自己动手来引入安全漏洞。
答案 1 :(得分:0)
同意@Widor,但如果您必须在SQL上执行此操作并且您的用户是SQL Server用户,则可以运行exec sp_who2
以获取活动用户列表。
编辑:
select distinct(loginame)
from master..sysprocesses
where db_name(dbid) = 'DB_NAME'
答案 2 :(得分:0)
你必须添加一个数据表作为标志的列,一旦登录就设置为true,并在Session_End事件上设置为false。
获取基于标志列的列表(例如)flg = true