我在example.com
上有一个DNN网站,在subdomain.example.com
上有一个MVC网站。我根据这篇文章设置了MembershipProvider
和RoleProvider
:SharePoint-Forms-Based-Authentication-Using-DotNet。现在我想在两个站点之间共享auth cookie。我在web.config
这两个domain=".example.com"
文件中设置了域密钥。 Fiddler说在请求任何网站时使用相同的cookie。并且有以下效果:当我登录其中一个站点时,我正在从另一个站点注销。我能错过什么?
以下是MVC网站web.config
的一部分:
<machineKey
validationKey="DEE8F9D31F46D663FA0BCF9A6A9701B0796777C5"
decryptionKey="E75FBCF55F6BB0B2A352036B965725FD739B2EB21B790659"
decryption="3DES"
validation="SHA1" />
<authentication mode="Forms">
<forms
name=".DOTNETNUKE"
protection="All"
timeout="60"
cookieless="UseCookies"
loginUrl="~/Account/Login"
domain=".example.com"
path="/" />
</authentication>
<httpCookies httpOnlyCookies="true" requireSSL="false" domain=".example.com" />
<!-- Configure the Sql Membership Provider -->
<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="DnnSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="0"
requiresUniqueEmail="false"
passwordFormat="Hashed"
applicationName="DotNetNuke" />
</providers>
</membership>
<!-- Configure the Sql Role Provider -->
<roleManager enabled="true" defaultProvider="SqlRoleProvider">
<providers>
<clear/>
<add
name="SqlRoleProvider"
connectionStringName="DnnSqlServer"
applicationName="DotNetNuke"
type="System.Web.Security.SqlRoleProvider,System.Web,
Version=2.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
答案 0 :(得分:0)
当您看到此行为时,通常来自加密的MachineKey值在不同的应用程序之间是不同的。当另一个应用程序尝试读取cookie时,它无法对其进行解密,然后删除它,允许您登录。</ p>
我会在web.config中验证这些项目。 (它们离节点不太远。