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
根据这篇文章:
如果启用了Roles框架,则RoleManagerModule HTTP模块将在FormsAuthenticationModule之后进入,并在PostAuthenticateRequest事件期间识别经过身份验证的用户的角色,该事件在AuthenticateRequest事件之后触发.如果请求来自经过身份验证的用户,则RoleManagerModule将覆盖FormsAuthenticationModule创建的GenericPrincipal对象,并将其替换为RolePrincipal对象.RolePrincipal类使用Roles API来确定用户所属的角色.
所以你是对的.
| 归档时间: |
|
| 查看次数: |
2192 次 |
| 最近记录: |