多个应用程序使用相同的login数据库相互logging
我在一台机器上设置了两个ASP.NET应用程序,它们的web.config文件在AspNetSqlMembershipProvider项中包含相同的applicationName值,因此它们共享用户和angular色。
问题顺序是:
- 用户login到应用程序A,
- 在浏览器中打开新标签
- login到应用程序B,
- 他在应用程序A中的login被注销
反之亦然。
我应该使用不同的方法在两个应用程序之间共享login信息吗?
您拥有的问题是因为使用了相同的cookie,用于validation2个不同的login名。
从我理解的解决scheme是给不同的login名称cookie,所以一个cookie,而不是覆盖另一个。
可能解决scheme是在web.config。
在configuration
如果您有相同的域并在不同的目录/应用程序上运行, 或者更改也用于保存Cookie 的域值 , 请将名称值更改为您的2个应用程序中不同的内容。
<authentication mode="Forms"> <forms name=".CookieSuffix" domain="yoururl.com" ... /> </authentication>
例如,在你的应用程序的2个不同的web.config中,放置
在应用程序1上: name =“.app1”
在应用程序2上: name =“。app2”
或者在应用程序1上: domain =“app1.yoururl.com”
在应用程序2: 域=“app2.yoururl.com”
如果你分开你的应用程序,基于url,甚至尝试一些类似的aproces。
Cookie保留,使用域名的cookie名称,所以这是你必须尝试将它们分开的2个值。
窗体设置上的详细信息可以在这里find: http : //msdn.microsoft.com/en-us/library/aa480476.aspx
手动login
如果你有机会做手动login解决scheme是在这个function
FormsAuthentication.GetAuthCookie(cUserName, false, "cookiePath"); FormsAuthentication.SetAuthCookie(cUserName, false, "cookiePath");
您只需要使用不同的cookiepath,但是您必须更改程序中的许多点,并捕获进程login,注销和身份validation。
希望这对你有所帮助。
你应该看看这个教程。
向下滚动到标题为将用户存储分区为应用程序的部分。 它说那里你可以使用同一个用户存储多个应用程序。