【发布时间】:2013-11-07 15:52:45
【问题描述】:
我最近在 MVC4 中构建了一个使用 CAC 身份验证的 Web 应用程序。一切正常,除了我的应用程序并不总是每次都进入登录操作结果。我意识到原因是因为 IIS 第一次缓存我的凭据,我不希望它这样做。如何防止 IIS 缓存我的登录凭据,但保留我的图像、css、javascript 缓存?
【问题讨论】:
-
从其他浏览器尝试 - 凭据消失了吗? IIS 不会缓存您的凭据 - 如果您使用的是 Forms 身份验证,则会保存一个 cookie,并且当您访问该页面时会找到您的会话。如果您这样做是为了在您关闭浏览器时删除 cookie,那就行了。
-
后续:这篇老文章(是的,例子在 VB 中)很好地解释了这个过程:asp.net/web-forms/tutorials/security/introduction/…
-
标记到@mattw - 当服务器重新启动或服务也被循环时,cookie被删除。
-
@TechieJoe 是和否。cookie 仍然存在(它存储在用户的机器上),但 cookie 所指的会话已消失/清除。这里有一个大问题:如果您将会话存储在数据库或 ASP.NET 以外的其他地方[如果您正在对应用程序进行负载平衡,则必须这样做],会话将继续存在。在这种情况下,回收 AppPool 不会清除会话。
-
@TechieJoe - 这是不正确的。 cookie 存储在客户端上。您可能指的是,如果 machineKey 设置为自动生成,则 IIS/服务器重新启动可能会导致生成新的 machineKey,从而使现有的身份验证 cookie 无效......或者 MattW 所说的 :)
标签: asp.net asp.net-mvc iis