RoleManagerModule和RolePrincipal对象

Sou*_*ceC 3 c# asp.net authentication forms-authentication roles

根据我的书,如果启用了角色管理,则RoleManagerModule通过将RolePrincipal对象分配给用户来创建用户的安全上下文HttpRequest.User.但是,是否已经创建了安全上下文(因此主要对象被分配HttpContext.User)FormsAuthenticationModule,在被调用之前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()
    }       
}
Run Code Online (Sandbox Code Playgroud)

主要对象是由对象(由创建者)创建FormsAuthenticationModule和分配给HttpRequest.User后来替换的?RolePrincipalRoleManagerModule

bbm*_*mud 6

根据这篇文章:

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

所以你是对的.