3

私の本によると、ロール管理が有効になっている場合、オブジェクトを にRoleManagerModule割り当てることにより、ユーザーのセキュリティ コンテキストを作成します。しかし、呼び出される前に呼び出される によって、セキュリティ コンテキストが既に作成されている (つまり、プリンシパル オブジェクトが に割り当てられている)ではありませんか?RolePrincipalHttpRequest.UserHttpContext.UserFormsAuthenticationModuleRoleManagerModule

次のコードでは、まだ呼び出されていない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に置き換えられますか?RolePrincipalRoleManagerModule

4

1 に答える 1

6

この記事によると:

Roles フレームワークが有効になっている場合、RoleManagerModule HTTP モジュールは FormsAuthenticationModule の後に介入し、AuthenticateRequest イベントの後に発生する PostAuthenticateRequest イベント中に認証されたユーザーのロールを識別します。要求が認証済みユーザーからのものである場合、RoleManagerModule は FormsAuthenticationModule によって作成された GenericPrincipal オブジェクトを上書きし、RolePrincipal オブジェクトに置き換えます。RolePrincipal クラスは、Roles API を使用して、ユーザーが属するロールを判別します。

だからあなたは正しいです。

于 2009-05-15T23:02:41.097 に答える