SetAuthCookie如何适用于两个不同的站点

时间:2012-09-24 10:27:34

标签: asp.net authentication cookies

我想知道SetAuthCookie如何在同一服务器上为不同的应用程序工作?

目前,我有两个具有不同虚拟目录的类似应用程序。

我怎样才能这样做,如果我登录其中一个,那么它不会要求我登录其他应用程序,并且登出时也一样?

2 个答案:

答案 0 :(得分:1)

如果两个应用程序都托管在同一顶级域中,则可能。您应该在两个应用程序的web.config中指定此域:

<forms 
   name="name" 
   loginUrl="URL" 
   defaultUrl="URL"
   domain="example.com">
</forms>

这样,表单身份验证cookie将随domain属性设置一起发出,客户端将在两个应用程序之间有效地发送它。另一个先决条件是两个应用程序共享相同的机器密钥,以便第二个应用程序可以成功解密由第一个应用程序加密的身份验证cookie。如果两个应用程序都托管在同一台服务器上,您可以在machine.config中设置这些机器密钥,如果没有,那么您可以在每个应用程序的web.config中设置它们:

<system.web>
    <machineKey decryption="AES" decryptionKey="C03B1AB0BC1ACCD18EA915CBD87373010AD0DEC430A69871,IsolateApps" validation="AES" validationKey="C0ED7C430148AD4BC6505085DA4FD0DD3EE2453B566FC4EA4C7B3C2DCAB2025A79C774370CA884DF909CE9A3D379E544B7890D0A1CEE164141D3A966999DC625,IsolateApps" />
</system.web>

我也在following answer中介绍了这一点。

答案 1 :(得分:0)

即使帖子已经过时但是有一个简单的解决方案在web.config中的表单标记中添加“name”,因为如果你没有为cookie命名它将具有默认值

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" name="client" />
</authentication>

为另一个应用程序添加另一个名称,它与我完美配合。祝你好运