0

我正在使用 asp.net 成员资格,并且我从 loin 页面上的代码 plex 获得了一些代码,这些代码对所有角色成员都是通用的,我正在执行以下代码:

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 回答