验证票证对于不同的应用程序是相同的

时间:2014-04-03 15:21:00

标签: c# asp.net asp.net-mvc-4

我创建了两个应用程序Asp.net 4 Web应用程序。当我在第一个应用程序中创建一个用户并以该用户身份登录,并启动另一个应用程序时,我将以该用户身份登录。在一个应用程序中我创建了自己的会员提供者和角色提供者我使用了Forms身份验证。但这并没有解决我的问题。有人可以告诉我为什么auth票适合两个不同的应用程序以及如何解决这个问题? 我不知道应该展示哪部分代码。如果有人需要一些代码,请告诉我显示。

2 个答案:

答案 0 :(得分:2)

这可能是因为您没有为应用程序设置machineKey,因此他们都使用machineKey中定义的全局machine.config

此外,您可能在同一主机名下运行两个应用程序(可能localhost使用不同的端口),因此浏览器会将存储在Cookie中的身份验证票证重新发送到这两个应用程序。

在每个应用Web.Config中,尝试设置不同的machineKey

<system.web>
    <machineKey validationKey="1C4AF0D197F076CD6F6DBB14AB0A2D8D21D686040E829F3B1DC8B3A75011C5B9E7CA0AF3E56083F818A0B48E1C2358E2C4183B1D638C5F0C668591951A41B9A2" decryptionKey="2D41E8D77838F5EBBC0ACD1E8EC267379A109EF0B89CA8B229E35D13B0871705" validation="SHA1" decryption="AES" />
</system.web>

我使用MachineKey Generator生成上述密钥。

答案 1 :(得分:2)

如果两个应用程序托管在同一台计算机上,则可能使用相同的cookie将身份验证故障单存储在浏览器上。如果您不更改cookie名称,则默认值为.ASPXAUTH。如果您希望每个应用程序单独存储自己的身份验证票证,则需要更改其中一个或两个应用程序的cookie名称。

在您的Web.config中:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" name=".AppNameAuth"  />
</authentication>

我通常将其更改为.AppNameAuth,将AppName替换为应用程序的名称。