如果没有授权,如何将用户重定向到ASP.NET页面?

前端之家收集整理的这篇文章主要介绍了如果没有授权,如何将用户重定向到ASP.NET页面?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要我的用户重定向到AuthError.aspx页面(“您无权访问此页面”),当他们被认证但尝试访问他们无法访问的页面(由于考试角色) 。如果我设置web.config所以:
  1. <authentication mode="Forms">
  2. <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
  3. </authentication>

这是系统的错误行为,因为用户已经被认证,并且不需要将他或她重定向到此页面。但是如果我在这里写AuthError.aspx而不是Login.aspx怎么可能将尚未验证的用户重定向登录页面

解决方法

登录页面的Page_Load上,您需要检查用户是否进行身份验证,如果要将其重定向到访问被拒绝的页面
  1. protected void Page_Load(object sender,EventArgs e)
  2. {
  3. if (User.Identity.IsAuthenticated) // if the user is already logged in
  4. {
  5. Response.Redirect("~/AccessDenied.aspx");
  6. }
  7. }

如果您想要获得一点爱好者,您可以检查ReturnUrl参数,以确定用户是否直接进入页面(例如通过保存在登录页面上的书签),并以不同的方式处理。以下是一个例子:

  1. protected void Page_Load(object sender,EventArgs e)
  2. {
  3. if (User.Identity.IsAuthenticated)
  4. {
  5.  
  6. // if they came to the page directly,ReturnUrl will be null.
  7. if (String.IsNullOrEmpty(Request["ReturnUrl"]))
  8. {
  9. /* in that case,instead of redirecting,I hide the login
  10. controls and instead display a message saying that are
  11. already logged in. */
  12. }
  13. else
  14. {
  15. Response.Redirect("~/AccessDenied.aspx");
  16. }
  17. }
  18. }

猜你在找的asp.Net相关文章