2010-01-21 2 views
2

В моей системе есть разные пользователи, суперадмин, администратор, участник, анонимный пользователь.Членство в ASP.NET Остановить перенаправление на целевой URL-адрес, если пользователь не указан в указанной роли

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

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

ответ

3

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

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

0

Вы можете проверить, если программно текущий пользователь находится в роли в коде позади, вместо того, чтобы делать это через 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; 
    } 
} 
Смежные вопросы