Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 身份验证票证对于不同的应用程序是相同的_C#_Asp.net_Asp.net Mvc 4 - Fatal编程技术网

C# 身份验证票证对于不同的应用程序是相同的

C# 身份验证票证对于不同的应用程序是相同的,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我创建了两个应用程序Asp.net 4 web应用程序。当我在第一个应用程序中创建一个用户并以该用户的身份登录,然后启动另一个应用程序时,我将以该用户的身份登录。在一个应用程序中,我创建了自己的成员资格提供商和角色提供商。我使用表单身份验证。但这并不能解决我的问题。有人能告诉我为什么auth ticket适合两种不同的应用程序,以及如何解决这个问题吗? 我不知道应该显示代码的哪一部分。如果有人需要一些代码,请告诉我将显示。这可能是因为您没有为应用程序设置machineKey,因此它们都使用mac

我创建了两个应用程序Asp.net 4 web应用程序。当我在第一个应用程序中创建一个用户并以该用户的身份登录,然后启动另一个应用程序时,我将以该用户的身份登录。在一个应用程序中,我创建了自己的成员资格提供商和角色提供商。我使用表单身份验证。但这并不能解决我的问题。有人能告诉我为什么auth ticket适合两种不同的应用程序,以及如何解决这个问题吗?
我不知道应该显示代码的哪一部分。如果有人需要一些代码,请告诉我将显示。

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

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

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

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


我曾经生成上面的键。

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

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

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

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


我曾经生成上述密钥。

如果两个应用程序托管在同一台机器上,它们可能使用相同的cookie在浏览器上存储身份验证票证。如果不更改cookie名称,则默认值为
.ASPXAUTH
。如果希望每个应用程序分别存储自己的身份验证票证,则需要更改一个或两个应用程序的cookie名称

在Web.config中:

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


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

如果两个应用程序托管在同一台机器上,它们可能使用相同的cookie在浏览器上存储身份验证票证。如果不更改cookie名称,则默认值为
.ASPXAUTH
。如果希望每个应用程序分别存储自己的身份验证票证,则需要更改一个或两个应用程序的cookie名称

在Web.config中:

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


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

mashine.config是Windows文件吗?如何更改我的mashineKeyIt全局存储在系统文件夹中。但是您不应该更改它,您需要为每个应用程序设置不同的
machineKey
,或者让它们在不同的主机名上运行。我尝试过这样做,但遇到了这样一个错误:说明:处理此请求所需的配置文件时出错。请查看下面的特定错误详细信息,并适当修改配置文件。解析器错误消息:在应用程序级别之外使用注册为allowDefinition='MachineToApplication'的节是错误的。此错误可能是由于未将虚拟目录配置为IIS中的应用程序所致。是否在IIS中使用虚拟目录?运行应用程序时,URL是什么?mashine.config是否是某个Windows文件?如何更改我的mashineKeyIt全局存储在系统文件夹中。但是您不应该更改它,您需要为每个应用程序设置不同的
machineKey
,或者让它们在不同的主机名上运行。我尝试过这样做,但遇到了这样一个错误:说明:处理此请求所需的配置文件时出错。请查看下面的特定错误详细信息,并适当修改配置文件。解析器错误消息:在应用程序级别之外使用注册为allowDefinition='MachineToApplication'的节是错误的。此错误可能是由于未将虚拟目录配置为IIS中的应用程序。您是否在IIS中使用虚拟目录?运行应用程序时,URL是什么?