使用相同登录数据库的多个应用程序相互记录

Axa*_*dax 7 asp.net asp.net-membership login

我在一台机器上设置了两个ASP.NET应用程序,它们的web.config文件在AspNetSqlMembershipProvider项目中包含相同的applicationName值,因此它们共享用户和角色.

问题顺序是:

  • 用户登录应用程序A,
  • 在浏览器中打开新选项卡
  • 登录到应用程序B,
  • 他在申请表A中登录已退出

反之亦然.

我应该使用不同的方法在两个应用程序之间共享登录信息吗?

Ari*_*tos 15

您遇到的问题是因为使用了相同的cookie,用于验证2个不同的登录名.

根据我的理解,解决方案是在不同的登录名上提供不同的cookie名称,因此一个cookie不会覆盖另一个cookie.

可能解决方案是在web.config上.

在配置

如果您具有相同的域并在不同的目录/应用程序上运行,则更改名称值,在2个应用程序上更改为不同的,或者还更改用于保留cookie 的域值.

<authentication mode="Forms">
 <forms name=".CookieSuffix" domain="yoururl.com" ... />
</authentication>    
Run Code Online (Sandbox Code Playgroud)

例如,在您的应用上的2个不同的web.config上,放置
在app 2上的应用1:name =".app1"
:name =".app2"

或者在应用1上的应用1:domain ="app1.yoururl.com"
:domain ="app2.yoururl.com"
如果你分开你的应用,基于网址,甚至尝试一些类似的过程.

使用域名上的cookie名称保留cookie,因此这是您必须尝试分离它们的2个值.

有关表单设置的详细信息,请访问:http: //msdn.microsoft.com/en-us/library/aa480476.aspx

手动登录

如果你有机会登录,那么解决方案就是这个功能

FormsAuthentication.GetAuthCookie(cUserName, false, "cookiePath");
FormsAuthentication.SetAuthCookie(cUserName, false, "cookiePath");
Run Code Online (Sandbox Code Playgroud)

您只需要使用不同的cookie路径,但是,您必须在程序上更改许多点,并捕获进程登录,注销和身份验证.

希望这对你有所帮助.