我的系统有不同的用户,superadmin,admin,member,anonymous user。
在某些页面中,我只想要管理员用户登录。如果成员登录,我不想将它们重定向到目标URL。
如何停止重定向?
答案 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");
}
答案 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;
}
}