ASP.NET成员资格如果用户未处于指定角色,则停止重定向到目标URL

时间:2010-01-21 07:41:19

标签: asp.net-membership

我的系统有不同的用户,superadmin,admin,member,anonymous user。

在某些页面中,我只想要管理员用户登录。如果成员登录,我不想将它们重定向到目标URL。

如何停止重定向?

2 个答案:

答案 0 :(得分:3)

我不记得原生ASP.NET MembershipProvider在执行succssful后允许不同的重定向位置/行为。您可能需要实现自己的登录逻辑。 E.g:

if (Membership.ValidateUser(userName.Text, password.Text))
{
    /* add your own code to check if user is in the role for redirect */

    if (Request.QueryString["ReturnUrl"] != null) 
    {
        //redirect to the return url
        FormsAuthentication.RedirectFromLoginPage(userName.Text, false);
    }

    /* login without redirect */
    FormsAuthentication.SetAuthCookie(userName.Text, false);
}
else
{
    Response.Write("Invalid UserID and Password");
}

以上代码来自MSDN Forms Authentication in ASP.NET 2.0

答案 1 :(得分:0)

您可以以编程方式检查当前用户是否在后面的代码中扮演角色,而不是通过web.config执行此操作。首先,清除您在Web配置中对该角色的任何限制。

protected void Page_Load( object sender, EventArgs e )
{
    if( !Roles.IsUserInRole("admin") )
    {
        // 1) Either redirect to your custom location
        // Response.Redirect("Some custom place");
        // return;

        // 2) Or just change your output of this page
        // Response.Write("You don't have access to this page. =P");
        // Response.End();
        // return;
    }
}