Asp.net Forms身份验证登录环
-
23-08-2019 - |
题
当您使用Cookie会话你怎么解决的无限循环登录问题,login.aspx的名称无法改变一个HttpHandler的?
即。当使用管理员权限用户点击注销按钮和返回url到受限制的页面被传送到的Login.aspx然后其他用户没有管理员权限尝试的登录他们重定向回到登录页面。
我也碰到过这种解决方案但我不能更改登录名称。 ASPX一个HTTP处理程序,并且isauthenticated功能似乎并没有与Cookie的身份验证aspx页面的工作,因为窗体身份验证票证似乎重定向到登录页面时,从URL剥离。
修改强>
由于本申请是已经在生产我不能改变登录/注销/超时处理的页面流或重命名的登录页面。
解决方案
检查用户是否有权访问的RETURNURL的页面,登录该页面的Login.aspx后。您可以使用UrlAuthorizationModule的这个方法(或者自定义,如果它最适合你):
System.Web.Security.UrlAuthorizationModule.CheckUrlAccessForPrincipal(
returnUrl,
userPrincipal,
GET");
如果该用户未被授权,只是重定向到用户可访问的页面。
要得到用户负责人:
var roles = System.Web.Security.Roles.GetRolesForUser(username);
var principal = new System.Security.Principal.GenericPrincipal(
new System.Security.Principal.GenericIdentity(username),
roles
);
其他提示
我们也有类似的问题,我固定它执行以下操作:
If "LogOut".Equals(e.CommandName) Then
FormsAuthentication.SignOut()
Response.Redirect("~/Login.aspx")
End If
和然后在我们的Login.aspx改变一项PostBackUrl到的Login.aspx如果它包含发送该用户返回到一个的Login.aspx参数RETURNURL
一个几个选项...
一,当用户注销时,所以没有RETURNURL手动回的Login.aspx重定向。对你的网页会话超时相匹配的元刷新,因此用户不会对资源的点击他们突然不能去。
二,随时登录有人出的Login.aspx的Page_Load中。嘿,为什么不呢?我能想到的一些原因,但也许他们并不适用于您的情况。
三,忽略RETURNURL。你不必调用RedirectFromLoginPage!将用户重定向到登录时默认目标网页。
你能不能改变页面流?
我的意思是,而不是重定向回login.aspx的页面,当用户不具有对资源的访问,重定向到一个信息页面。
本页面说明了重定向的原因,并给出了他们的选择,如:
1. Click here to login as another user.
2. Click here to request access to the page.
3. Click here to login again, if your session has expired.
这将消除循环引用,因此该问题。
什么并称检查,如果Request.UrlReferrer是登录页面,如果是这样的检查,如果他们被授权访问Request.Url,如果没有它们重定向到一个“您未被授权查看此页面的HTTP模块“。页。
尽管你说你不能login.aspx的名称改变为HTTP处理程序,具有使得每当请求login.aspx的服务器例如用户重定向到一个HTTP处理你尝试添加一个HTTP 301重定向login.ashx?