当用户登录我的网站时,我有一个自定义成员资格提供程序,它会覆盖ValidateUser
并验证用户是否拥有足够的权限等。
但是,当使用RememberMeSet
通过默认表单身份验证实现“记住我”功能时,我还想在第一次请求时验证用户。
当用户使用持久性cookie登录时,是否有一些我可以附加到该触发器的钩子?
答案 0 :(得分:2)
您需要做的只是调用Membership.GetUser()
,它返回当前登录用户的MembershipUser
实例。如果您的用户上次使用“记住我”登录,则会导致持久身份验证。客户端上的cookie,您的MembershipProvider会自动告诉您用户是否已登录[来自持久性cookie]。 从持久身份验证Cookie验证用户无需额外的工作。
您可以在方法MembershipUser
返回的Membership.GetUser()
实例上计算额外的挂钩,并检查他是否有权执行该任务。如果未发现用户已登录,则该方法将仅返回null
。
答案 1 :(得分:0)
我认为您正在寻找的是HttpModule中的AuthenticateRequest事件。在此事件处理程序中,您可以检查cookie并验证凭据,然后设置HttpContext.Current.User以授权用户。
答案 2 :(得分:0)
解决方法:
UserIsVerified
或其他true
Application_PreRequestHandlerExecute
,验证是否已设置UserIsVerified
道具,如果没有:执行相应的检查为什么Application_PreRequestHandlerExecute?
在PreRequest上,会话和个人资料都可用。 .Net已经解释了持久性cookie,因此您可能想要的每个信息都存在。当用户检查失败时,您也可以执行重定向,因为我们处于请求周期中。它也发生在任何用户代码执行之前,所以在这里做它是非常安全的,以防止这样的行为。
如果处理程序中的身份验证失败,我会重定向到注销页面,让.Net处理其他所有内容。