如果设置“记住我”,如何更新上次登录日期?

时间:2009-03-25 14:47:45

标签: authentication login membership

当用户登录我的站点时,访问日期将标记在数据库(用户表)中。这由(自定义)成员资格提供程序处理。但是,如果用户检查“记住我吗?”登录时选项,(自然)不会提示他们在后续访问时登录。由于在这种情况下不使用成员资格提供程序,因此数据库中不会更新上次登录日期。

使用表单身份验证,如何确保在每次新访问网站时更新上次登录日期,而不仅仅是在他们实际登录时?是否有任何可以实现此目的的事件?

我无法使用会话状态,因为它在我正在开发的网站中被完全禁用(会话模块已被删除)。

由于

2 个答案:

答案 0 :(得分:2)

我假设您正在使用cookies(我无法看到“记住我”将如何工作)。

当用户登录时,设置两个cookie,一个永久性(如果选中“记住我”)和一个临时(仅此会话)。第二个是您用来授权用户的内容。

因此,在用户需要登录的页面上,查找会话cookie。如果找到,继续正常。如果找不到,请查找永久性cookie,如果找到,请查看用户,设置登录日期,并设置会话cookie。 (如果找不到永久性cookie,他只是没有登录)。

答案 1 :(得分:0)

假设您正在讨论ASP.NET 2.0(鉴于成员资格提供者评论)。

无论您在哪里查看cookie以查看用户是否应该自动登录,您都应该调用成员资格提供程序的GetUser函数,该函数使用布尔值来更新用户的活动日期。

根据MSDN docs

MembershipProvider.GetUser方法

作为输入,采用唯一用户标识符和布尔值,指示是否更新用户的LastActivityDate值以显示用户当前在线。 GetUser方法返回一个MembershipUser对象,该对象使用指定用户的数据源中的当前值填充。如果在数据源中找不到用户名,则GetUser方法返回null(在Visual Basic中为Nothing)。

相关问题