0

我在 Web 应用程序(ASP.NET 4)中使用 asp 登录控件。如果管理员角色的用户我想重定向到管理页面。

我使用此代码,但不工作:

protected void baseLogin1_LoggingIn(object sender, LoginCancelEventArgs e)
    {
        if (Page.User.Identity.IsAuthenticated && Roles.IsUserInRole(Page.User.Identity.Name, "Admin"))
        {
            Page.Response.Redirect("admin/Default.aspx");
        }
    }

请帮我。

4

2 回答 2

1

在对用户进行身份验证之前引发 LoggingInEvent。所以你的条件的第一部分总是错误的。在 LoggedIn 事件下移动你的逻辑。试试这个:

protected void baseLogin1_LoggedIn(object sender, EventArgs e)
{
    if (Context.User.Identity.IsAuthenticated && Context.User.IsInRole("Admin"))
    {
        Context.Response.Redirect("admin/Default.aspx");
    }
}
于 2013-06-02T20:47:36.063 回答
1

使用 LoggedIn 事件:事件描述在这里

你真的应该使用Server.Transfer("~/admin/Default.aspx");它,因为它更有效率(更少的往返)。

如果页面需要为书签保留查询字符串,或者在浏览器中保留正确的 URL 很重要,则Response.Redirect()需要但要注意额外的带宽成本。

于 2013-06-02T20:50:52.920 回答