当您使用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?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top