Simplemembership ASPXAUTH cookie在两个单独的Web项目上进行验证

Ron*_*ton 7 asp.net-mvc forms-authentication .aspxauth asp.net-mvc-4 simplemembership

我正在使用SimpleMembership开发一个ASP.NET MVC4项目,它在你登录时会生成一个ASPXAUTH cookie.它似乎工作得很好,但是今天我打开了另一个MVC4项目,只是注意到我已经登录了在.

这非常奇怪,因为新项目实际上没有在数据库中定义任何用户.更令人不安的是,当我点击新项目的"注销"时,它将我从原始网站中删除.

两个站点都在不同的端口上运行,但都在localhost上运行.当检查请求以查看它返回"IsAuthenticated == true"的原因时,我注意到ASPXAUTH cookie被发送到两个站点,并且调试器中cookie的"domain"参数为"null".这让我觉得可能cookie正在生成为"无域"cookie(我不知道这样的事情是否可能,说实话!),并查看了web.config设置以指定域名:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" domain="http://localhost:56626" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

不幸的是,设置"domain"参数已使cookie停止工作.我已经尝试了所有排列(使用http,没有http,有端口,没有端口等),每次我指定一个域时,浏览器都会收到带有正确指定域名的cookie(我在Chrome开发者工具中检查过它),但随后无法将其发送回后续请求的服务器.

所以,我对这里发生的事情感到很困惑.这是否是由于未在某处正确设置某些内容而导致的安全漏洞?或者,ASPXAUTH cookie将在同一域上的两个不同端口上的两个完全不同的Web应用程序上授权用户,这是完全正常的行为吗?我会在网络主机上测试这个,但遗憾的是我现在无法访问运行MVC4的任何内容.

提前致谢.

Pau*_*ens 5

ASPXAUTH是cookie的默认名称,但是通过在Web.Config中为每个项目更改此名称,您可以使其仅适用于该项目.

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" domain="http://localhost:56626"  name=".PROJ1AUTH"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)