我有以下问题:我研究过在同一个域中的两个应用程序之间共享 cookie,但我很确定我遗漏了一些东西并且还没有找到我的答案。
我在网站上有两个这样的应用程序:app.domain.com 和 portal.app.domain.com 第一个应用程序是 Orchard cms,我创建了自己的自定义成员(member)提供程序,因此 orchard 中的身份验证如下所示:
if (ModelState.IsValid && CustomMembershipProvider.ValidateUser(userNameOrEmail, password))
{
FormsAuthentication.SetAuthCookie(userNameOrEmail, true);
}
和两个应用程序中的 web.config。
<authentication mode="Forms">
<forms name="loginCookie" path="/" loginUrl="~/Users/Account/AccessDenied" timeout="2880" cookieless="UseCookies"
enableCrossAppRedirects ="true" domain=".domain.com"
requireSSL="false"/>
</authentication>
<machineKey validationKey="CB6DEDC99140ABCEA1CFE08BEF8407BE2AE60DDB905264F6F7FAA9650B5AB4F1986F84878B4842FB9B51EDD477FFC518C6B6F1687FF25D5BAE883C313F05A6A4" decryptionKey="B0F735974F5261E63D07F4571FB11B392477173098F71E7CA76C1DD9A459C638" validation="SHA1" decryption="AES" />
第二个应用程序是 asp.net mvc 4 应用程序。
每次都会创建 Cookie,因此它可以正常工作,但 portal.app.domain.com 不会“看到”loginCookie。 Request.IsAuthenticated 返回 false 并且 Request.Count 不包含我想要的有效 cookie 数量。更重要的是,当我登录 portal.app.domain.com 时,loginCookie 以完全相同的方式创建,但具有新的值。奇怪的是我可以 fiddler 看到域的所有 cookie。我发现了一些关于重定向的东西,但是有人可以向我解释更多关于它的东西吗(我应该添加什么?),此外,是否可以在没有重定向的情况下共享 cookie,我的意思是当登录 app.domain.com 时,用户可以写地址门户。 app.domain.com 在浏览器中,他仍然可以登录吗?
预先感谢您的所有回复。
最佳答案
如果我没记错的话,在你的每个项目中默认都会有一个默认的连接字符串
它将作为 connectionStringName="DefaultConnection"
你会在 web.config
中找到它作为我的项目中的编码
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
设置 DefaultConnection 的连接字符串在你的两个项目中都是通用的,这样你就可以为你的两个项目设置相同的连接字符串
关于c# - 在两个 asp.net mvc 应用程序之间共享 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471251/