【发布时间】:2010-10-26 21:41:55
【问题描述】:
Q 1. 据我了解,FormsAuthenticationModule 订阅了AuthenticateRequest 事件,因此只有在触发此事件后,才会调用FormsAuthenticationModule。但是下面的引用让我有点困惑:
-
AuthenticateRequest事件表明配置的身份验证机制已对当前请求进行身份验证。- 上面的引用不是表明当
AuthenticateRequest事件引发时,请求(又名用户)已经通过身份验证了吗?
- 上面的引用不是表明当
-
订阅
AuthenticateRequest事件可确保在处理附加的模块或事件处理程序之前对请求进行身份验证。- 据我了解这句话,如果我们订阅
AuthenticatedRequest,那么我们的事件处理程序将在FormsAuthenticationModule之前被调用?因此Application_AuthenticateRequest()会在FormsAuthenticationModule被调用之前被调用?
- 据我了解这句话,如果我们订阅
Q 2. 我正在学习的书建议在Application_AuthenticateRequest() 中我们能够验证用户是否是特定角色的成员,如果不是,我们可以自动添加用户:
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated && Roles.Enabled)
{
//here we can subscribe user to a role via Roles.AddUserToRole()
}
}
从上面的代码来看,Application_AuthenticateRequest() 在FormsAuthenticationModule 被调用之后被调用,但是同一本书的其他地方暗示Application_AuthenticateRequest() 在FormsAuthenticationModule 之前被调用:
Application_AuthenticateRequest在执行身份验证之前被调用。 这是创建您自己的身份验证逻辑的起点。
我错过了什么?
感谢
【问题讨论】:
标签: c# asp.net authentication forms-authentication httpapplication