asp.net - User.Identity 在我的 ASP.NET 网站的负载平衡场景下丢失

标签 asp.net asp.net-mvc iis-7.5 windows-authentication

我将 Windows 身份验证 用于负载平衡网站。负载平衡基于两个 IIS Web 服务器。我的站点中有一项功能允许用户重新登录,例如 Sharepoint 登录为不同的用户

但我注意到,当我重新登录时,一个站点中的 User.Identity 已更改,但另一个站点仍保留之前的帐户。

我怀疑cookie里面有东西应该清楚

有没有人在玩负载平衡时遇到过这个问题?或者您知道一些可能有帮助的相关文章吗?

我不知道如何解决这个问题。任何帮助将不胜感激。



<强> 顺便一提 我使用这种方法来实现它在单个服务器上工作的重新登录。 http://www.roelvanlisdonk.nl/?p=825 .

大家好,
我仍在研究此功能。 我在我的主页上打印了 User.Identity.Name。当我更改帐户时,User.Identity.Name 输出已正确更改。但是当我刷新首页时,有时首页会显示之前的账号。

最佳答案

如果我没看错你的评论,你的设置涉及两个网络服务器,每个都有一个具有相同名称(并且可能是相同密码)的本地用户,并且你正试图在网络场场景中使用 Windows 身份验证.

在您的情况下,每台计算机都有自己的帐户和名称 - 假设您的用户名是“AuthorizedUser”。请记住,如果 AuthorizedUser 是两台机器上的本地帐户,那么这就是两个完全不同的用户帐户。每台计算机检查自己的用户帐户信息以验证此人的身份,在非域情况下,计算机 A 没有理由信任在计算机 B 上通过身份验证的用户。

如果 有可能计算机 A 受信任的计算机 B 没有域场景 - 只是两台随机计算机碰巧拥有同名用户,想象一下侵入任何人的计算机是多么容易使用 Windows 身份验证的 Web 服务器。您所要做的就是猜测一个有效的用户名,而不是一个有效的用户名/密码组合。很容易看出为什么这是个坏主意。

要使 Windows 身份验证在网络场方案中起作用,您需要使用域用户(Windows NT 域)并且该域用户需要在两台服务器上设置相同的权限。这样,只有一个 AuthorizedUser,两个 Web 服务器都可以根据域验证身份。两台 Web 服务器都将自动相信域 Controller 已正确授权用户并信任该域。

关于asp.net - User.Identity 在我的 ASP.NET 网站的负载平衡场景下丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8336653/

相关文章:

javascript - SignalR 连接到多个服务器

asp.net - EF6 等效于 EF Core 的 QueryTrackingBehavior.NoTracking

asp.net-mvc - 在 ASP.NET MVC 项目 : compile OK, 中重命名命名空间运行不正常

c# - Nhibernate 拦截器 - 获取属性长度 OnSave

django - IIS 7.5 在几次请求后崩溃(使用 Django + PyISAPIe)

asp.net - 替代Response.End()?

c# - 无法将 MySQL 日期/时间值转换为 VS2010 中的 System.DateTime

c# - ASP.NET MVC UpdateModel 意外失败

asp.net - 调试.Net/IIS崩溃,该崩溃不会因附加调试器而崩溃

http - Unity WWW Class Method Post 在 IIS7.5 上使用 Coldfusion 9 上传文件时出现错误