-1

我想知道SetAuthCookie同一服务器上不同应用程序的工作原理?

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

我怎样才能做到这一点,以便如果我登录其中一个应用程序,那么它不会要求我登录另一个应用程序,而注销也是如此?

4

2 回答 2

1

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

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

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

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

我也在下面的答案中介绍了这一点。

于 2012-09-24T10:31:05.207 回答
0

即使帖子很旧,但是有一个简单的解决方案,可以在 web.config 的表单标签中添加“名称”,因为如果您不给 cookie 命名,它将有一个默认名称

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

对于另一个应用程序使用另一个名称,它与我完美配合。祝你好运

于 2013-03-04T15:03:20.343 回答