如果没有授权,如何将用户重定向到ASP.NET页面?
发布时间:2020-12-16 00:45:26 所属栏目:asp.Net 来源:网络整理
导读:我需要我的用户被重定向到AuthError.aspx页面(“您无权访问此页面”),当他们被认证但尝试访问他们无法访问的页面(由于考试角色) 。如果我设置web.config所以: authentication mode="Forms" forms loginUrl="~/Account/Login.aspx" timeout="2880" //authen
我需要我的用户被重定向到AuthError.aspx页面(“您无权访问此页面”),当他们被认证但尝试访问他们无法访问的页面(由于考试角色) 。如果我设置web.config所以:
<authentication mode="Forms"> <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> </authentication> 这是系统的错误行为,因为用户已经被认证,并且不需要将他或她重定向到此页面。但是如果我在这里写AuthError.aspx而不是Login.aspx怎么可能将尚未验证的用户重定向到登录页面? 解决方法
在登录页面的Page_Load上,您需要检查用户是否进行身份验证,如果要将其重定向到访问被拒绝的页面:
protected void Page_Load(object sender,EventArgs e) { if (User.Identity.IsAuthenticated) // if the user is already logged in { Response.Redirect("~/AccessDenied.aspx"); } } 如果您想要获得一点爱好者,您可以检查ReturnUrl参数,以确定用户是否直接进入页面(例如通过保存在登录页面上的书签),并以不同的方式处理。以下是一个例子: protected void Page_Load(object sender,EventArgs e) { if (User.Identity.IsAuthenticated) { // if they came to the page directly,ReturnUrl will be null. if (String.IsNullOrEmpty(Request["ReturnUrl"])) { /* in that case,instead of redirecting,I hide the login controls and instead display a message saying that are already logged in. */ } else { Response.Redirect("~/AccessDenied.aspx"); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读