我想知道SetAuthCookie
同一服务器上不同应用程序的工作原理?
目前我有两个具有不同虚拟目录的类似应用程序。
我怎样才能做到这一点,以便如果我登录其中一个应用程序,那么它不会要求我登录另一个应用程序,而注销也是如此?
我想知道SetAuthCookie
同一服务器上不同应用程序的工作原理?
目前我有两个具有不同虚拟目录的类似应用程序。
我怎样才能做到这一点,以便如果我登录其中一个应用程序,那么它不会要求我登录另一个应用程序,而注销也是如此?
如果两个应用程序都托管在同一个顶级域上,这是可能的。您应该在两个应用程序的 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>
我也在下面的答案中介绍了这一点。
即使帖子很旧,但是有一个简单的解决方案,可以在 web.config 的表单标签中添加“名称”,因为如果您不给 cookie 命名,它将有一个默认名称
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" name="client" />
</authentication>
对于另一个应用程序使用另一个名称,它与我完美配合。祝你好运