Членство в ASP.NET Прекратите перенаправление на целевой URL, если пользователь не в указанной роли - PullRequest
2 голосов
/ 21 января 2010

В моей системе разные пользователи: superadmin, admin, member, anonymous user.

На некоторых страницах я хочу, чтобы в систему входили только пользователи с правами администратора. Если пользователь входит в систему, я не хочу перенаправлять его на целевой URL.

Как я могу остановить перенаправление?

Ответы [ 2 ]

3 голосов
/ 21 января 2010

Я не помню, чтобы нативный ASP.NET MembershipProvider допускал различные места перенаправления / поведения после успешного входа в систему. Вы, вероятно, должны реализовать свою собственную логику входа в систему. Например:

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 в ASP.NET 2.0

0 голосов
/ 23 января 2010

Вы можете программно проверить, играет ли текущий пользователь роль в коде, вместо того, чтобы делать это через ваш web.config. Сначала снимите все ограничения, которые у вас есть для этой роли в веб-конфигурации.

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;
    }
}
...