0

私はasp.netメンバーシップを使用しており、次のコードを実行しているすべてのロールメンバーに共通のロースページのコードプレックスからいくつかのコードを取得しました:

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
//some code missing
below is to identify role and then redirecting to appropriate default page
else
        {
            // Next, determine if the user's username/password are valid
            if (Membership.ValidateUser(loginUsername, loginPassword))
            {
                e.Authenticated = true;
                string[] userRoles = Roles.GetRolesForUser(loginUsername);

                switch (userRoles[0])
                {
                    case "Administrator":
                        Login1.DestinationPageUrl = "~/Admin/Default.aspx";
                        break;
                    case "Member":
                        Login1.DestinationPageUrl = "~/Members/Default.aspx";
                        break;

                }
            }
}

しかし、ログアウトすると、適切にログアウトされ、ログアウト ページにリダイレクトされますが、リターン URL が添付されます。

http://localhost:52045/NexLev/login.aspx?ReturnUrl=%2fNexLev%2fMembers%2fDefault.aspx

そのため、メンバーが初めてログインした場合は正しいページに移動し、ログアウトすると上記の URL がログアウト ページに表示されますが、次回管理者がログインすると同じログイン テンプレートにログインした LoginView に移動します。管理者のデフォルトのページに移動する代わりに、ページにログインします。

誰かがこの問題を克服する方法を提案できますか? または、ユーザーの役割に応じてリダイレクトする別のアプローチを適用する必要があります。

4

2 に答える 2

2

Login1_LoggedInイベントで試してみてください

Response.Redirect(Login1.DestinationPageUrl);

これにより、LoggedInイベントがDestinationPageUrlページにリダイレクトされます。

于 2012-04-11T11:55:42.793 に答える
2

DestinationPageUrlロールに依存して設定する代わりに、すべてのユーザー(メンバーと管理者)に共通のデフォルトページを使用できます。ユーザーがログインすると、共通のデフォルトページにリダイレクトされ、そのページで行われるのは、ユーザーの役割を確認してから、を使用してユーザーを適切なページにリダイレクトすることだけResponse.Redirectです。

于 2012-04-11T11:51:50.013 に答える