2010-06-29 40 views
0

登录当用户登录到我的网站,当用户验证我有一个覆盖ValidateUser和验证用户具有足够的权限等净会员提供商,通过永久性Cookie

然而自定义成员资格提供,当通过使用RememberMeSet的默认表单身份验证实现'记住我'功能时,我还想要验证第一个请求上的用户。

当用户使用持久cookie登录时,是否有一些钩子可以附加到该触发器上?

回答

0

解决方法:

  1. 有像UserIsVerified什么
  2. 会话变量这个变量设置为true通过默认loginpage登录时(或通过对等单点登录)
  3. 创建方法Application_PreRequestHandlerExecute在global.asax中验证UserIsVerified支柱是否已设置,如果没有:执行相应检查

为什么Application_PreRequestHandlerExecute?

On PreRequest会话和配置文件都可用。 .Net已经解释了持久性cookie,因此你可能想要的每个信息都在那里。当用户检查失败时,您也可以执行重定向,因为我们在请求周期中。它也发生在任何用户代码被执行之前,所以afaik在这里执行以防止类似的行为是相当安全的。

如果处理程序中的身份验证失败,我重定向到注销页面并让.Net处理所有其他事情。

0

我想你要找的是HttpModule中的AuthenticateRequest事件。在这个事件处理程序中,您可以检查cookie并验证凭据,然后设置HttpContext.Current.User来授权用户。

+0

不是。我不想自己做任何cookie,因为.Net可以处理所有这些。 – 2010-06-30 09:37:38

2

您只需拨打Membership.GetUser()即可返回当前登录用户的MembershipUser实例。如果您的用户上次使用“记住我”登录,导致持久性验证。客户端上的Cookie,您的MembershipProvider会自动告诉您用户是否已从[持久cookie]登录。 从持久性验证cookie验证用户不需要额外的努力。

您可以工作出你的额外钩上由该方法返回Membership.GetUser()例如MembershipUser和检查,如果他授权执行任务。如果用户未被发现登录,该方法将简单地返回null