3

根据我的书,如果启用RoleManagerModule了角色管理,则通过将RolePrincipal对象分配给HttpRequest.User. 但是安全上下文不是已经创建(因此主体对象被分配给HttpContext.UserFormsAuthenticationModule,它在被调用之前RoleManagerModule被调用吗?

我问这个,因为在以下代码中分配给的主体对象HttpRequest.User已经存在,即使RoleManagerModule尚未被调用:

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated && Roles.Enabled)
    {
        //here we subscribe user to a role via Roles.AddUserToRole()
    }       
}

FormsAuthenticationModule那么,由 创造并分配给的主体对象,HttpRequest.User后来被RolePrincipal对象(由 创造RoleManagerModule)取代了吗?

4

1 回答 1

6

根据这篇文章

如果启用了 Roles 框架,RoleManagerModule HTTP 模块会在 FormsAuthenticationModule 之后介入,并在 PostAuthenticateRequest 事件期间识别经过身份验证的用户的角色,该事件在 AuthenticateRequest 事件之后触发。如果请求来自经过身份验证的用户,则 RoleManagerModule 将覆盖由 FormsAuthenticationModule 创建的 GenericPrincipal 对象并将其替换为 RolePrincipal 对象。RolePrincipal 类使用 Roles API 来确定用户所属的角色。

所以你是对的。

于 2009-05-15T23:02:41.097 回答