Объект RoleManagerModule и RolePrincipal - PullRequest
3 голосов
/ 16 мая 2009

Согласно моей книге, если управление ролями включено, то 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()
    }       
}

Итак, является ли главный объект, созданный FormsAuthenticationModule и назначенный на HttpRequest.User, позднее замененным RolePrincipal объектом (созданным RoleManagerModule)?

1 Ответ

6 голосов
/ 16 мая 2009

Согласно этой статье :

Если включена структура ролей, HTTP-модуль RoleManagerModule включается после FormsAuthenticationModule и определяет роли аутентифицированного пользователя во время события PostAuthenticateRequest, которое срабатывает после события AuthenticateRequest. Если запрос от аутентифицированного пользователя, RoleManagerModule перезаписывает объект GenericPrincipal, созданный FormsAuthenticationModule, и заменяет его объектом RolePrincipal. Класс RolePrincipal использует API ролей, чтобы определить, к каким ролям принадлежит пользователь.

Значит, ты прав.

...