我有一个奇怪的问题。
我有一个包含以下代码的页面。
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
Server.Transfer(@"~/Views/Public/Unauthorised.aspx");
return;
}
由于某种原因,对于一个用户(我们已将其范围缩小到他的单台计算机和 Windows 登录配置文件),IsAuthenticated
总是返回 false。即使他已登录该网站,也可以导航到需要经过身份验证的用户的其他页面。除了这一页。
我们检查了机器是否接受所有 cookie,但仍然遇到同样的问题。我不知道从这里去哪里...有什么建议吗?
至少有两种已知情况可以导致这种行为。
第一个案例当你设置了requireSSL="true"
在身份验证会话上web.config
然后您从非安全页面调用该函数。因此,如果您使用requireSSL="true"
Debug.Assert(Request.IsSecureConnection, "The IsAuthenticated will fail.");
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
Server.Transfer(@"~/Views/Public/Unauthorised.aspx");
return;
}
第二种情况当您没有设置domain="site.com"
再次在 web.config 中的身份验证会话中,您尝试从 web.config 请求一次 cookiewww.yoursitename.com
另一个来自yoursitename.com
。在这种情况下,身份验证 cookie 会有所不同,并且会失败。因此,请在 web.config 上设置该参数以及其他参数。
<authentication mode="Forms">
<forms domain="yoursitename.com" />
</authentication>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)