登录后更正正确的重定向ASP.NET

时间:2017-05-24 17:21:04

标签: c# asp.net redirect

当用户请求仅针对经过身份验证的用户的页面时,他/她将被重定向到登录页面。我还在嵌套的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");                  
            }
}

有没有办法如何将用户路由到他/她所请求的页面,以防他/她经过身份验证和授权,并将他/她路由到页面上说“你无权看到这个”,否则?

0 个答案:

没有答案