我遇到了以下问题:我研究了在同一个域上的两个应用程序之间共享cookie,但我很确定我错过了一些内容并且还没有找到我的答案。
我在这样的网站上有两个应用程序:app.domain.com和portal.app.domain.com 第一个应用程序是Orchard cms,我创建了自己的自定义成员资格提供程序,因此在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以完全相同的方式创建,但具有新值。什么是奇怪的我可以提琴手看到域名的所有cookie。我找到了一些关于重定向的内容,但是可以向我解释一些关于它的更多信息(我应该添加什么?),此外还可以在没有重定向的情况下共享cookie,我的意思是在app.domain.com用户登录时可以编写地址门户。 app.domain.com在浏览器中他还可以登录?
提前感谢所有回复。
答案 0 :(得分:0)
如果我没错,默认情况下每个项目都会有一个默认连接字符串
它将为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的连接字符串,以便为两个项目设置相同的