当用户请求仅针对经过身份验证的用户的页面时,他/她将被重定向到登录页面。我还在嵌套的web.config中使用基于用户角色的授权。
<authorization>
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>
之前的解决方案是,如果用户通过身份验证会将他重定向到他/她请求的页面,但由于用户可以请求他/她无权查看网页,因此网站会一遍又一遍地将他返回登录页面。
if (_user != null)
{
HttpContext.Current.Session["UserId"] = _user.Id;
FormsAuthentication.RedirectFromLoginPage(_user.Id.ToString(), false);
}
我不喜欢这样,所以我更改了代码以使用Response.Redirect()将用户路由到他/她的登录页面。不幸的是,我没有意识到用户无法首先访问他/她所要求的页面,并且总是在“欢迎页面”上结束。
if (_user != null)
{
HttpContext.Current.Session["UserId"] = _user.Id;
var role = _userAuth.GetUserRole(_user.Id); //Gets correct role for a user
if (role == "admin")
{
Response.Redirect("~/adm/Default.aspx");
}
else if (role == "service")
{
Response.Redirect("~/service/Default.aspx");
}
else
{
Response.Redirect("~/user/Welcome.aspx");
}
}
有没有办法如何将用户路由到他/她所请求的页面,以防他/她经过身份验证和授权,并将他/她路由到页面上说“你无权看到这个”,否则?