2

我的生产服务器上有一个非常奇怪的行为,一周内只发生几次。在表单登录 POST 上,重定向被发送到看起来像无 cookie 的 URL,例如:

"/(F(kD5qGnK-0b5L80VYgScenFuCnjQsLR67HhXq-BWXS1hL45hhqL8AiLlEyB-9CuJgutiyXzN42w8Bo_cm2o73GFWP_fuQ1AtPfXSaB7odZYAOBnuNW3Yy873fQDpRzYgOVo3Ee48gaCbS7FUIyOBA3CksCTZ3N6YCZ7pcZylZEo01))/SiteSpecificPath/CMS/edit/"

通常发生的是重定向到“/SiteSpecificPath/CMS/edit/”。

这反过来会导致重定向循环返回到 login.aspx 页面并继续这样。

我不想使用 cookieless 所以问题是这是如何触发的?有没有办法禁用这种行为?我查看了所有级别的配置文件,并且在所有地方都将 cookieless 设置为 false。

该站点是一个 EPiServer CMS 站点,但在这种情况下,它似乎与正常的 asp.net 表单登录过程有关,该过程由于某种原因触发了对无 cookie URL 的切换。

我找到了一些关于 cookieless 触发重定向循环的参考资料,但在我的情况下,奇怪的是为什么它甚至首先开始使用 cookieless URL。

我还使用高级日志记录进行了调试,以查看从浏览器发送的所有标头,但我没有看到任何奇怪的地方。Cookie 会正常发送,包括 ASP.NET 会话 cookie。

编辑:这不是访问问题。给定的用户可以正常登录,但有时会进入此重定向循环。

一些细节:Windows Server 2008 R2、EPiServer 6 R2、ASP.NET 4 上的 IIS7

4

1 回答 1

3

可能用户无权访问重定向 URL,这就是它每次重定向到登录页面并继续这样的原因。

首先检查用户是否被授权访问重定向url中的页面。如果用户未被授权,则重定向到用户可以访问的页面或更新用户的访问权限。

I don't want to use cookieless so the question is how this is triggered

使用 FormsAuthentication 时,请检查 web.config 中的设置是否相同。如下所示,它有一个属性cookieless,它可以有AutoDetectUseCookiesUseUri和等选项UseDeviceProfile

<authentication mode="Forms"> 
<!-- Detailed configuration options --> 
<forms name="MyForm" 
loginUrl="Login.aspx" 
timeout="30" 
cookieless="UseCookies"
... />
</authentication>

因此,在您的情况下,cookieless 的值似乎是 : UseUriOR AutoDetect,尽管UseDeviceProfile也是可能的。

UseUri:如果选择此配置选项,cookie 将不会用于身份验证。相反,运行时将表单身份验证票证编码到请求 URL

自动检测:如果客户端浏览器支持 cookie,则使用 cookie。否则,将使用票证的 URL 编码。

UseDeviceProfile :: 根据存储在 Web 服务器上的设备配置文件配置使用 cookie 或 URL 编码。这些配置文件存储在 c:[WinDir]\Microsoft.NET\Framework[Version]\CONFIG\Browsers 目录中的 .browser 文件中。

由于您不想使用 cookieless,请将值设置cookielessUseCookies

注意:使用该设置cookieless="UseCookies"时,需要客户端浏览器支持cookies。如果浏览器不支持 cookie,表单身份验证将无法正常工作。由于它永远不会从浏览器接收到有效的身份验证 cookie,因此 ASP.NET 会一遍又一遍地重定向回登录页面,最终您会陷入无限循环的登录页面

于 2013-09-11T08:24:37.697 回答