views:

202

answers:

2

I've set up two ASP.NET applications on a machine, their web.config files contain the same applicationName value in AspNetSqlMembershipProvider item so they share users and roles.

The problem sequence is:

  • user logs into application A,
  • opens new tab in a browser
  • logs into application B,
  • his login in application A is signed out

and vice versa.

Should I use a different approach to sharing login information between two applications?

A: 

You should check out this tutorial.

Scroll down to the section titled Partitioning the User Store Into Applications. It says there that you can use the same user store for multiple applications.

Theresa
Thanks, my user store works fine with multiple applications, the problem is that logging in application A logs out the user in application B.
Axarydax
+3  A: 

The problem you have is because the same cookie used, for authenticate the 2 different logins.

The solution from what I understand is to give different cookie name on the different logins, so the one cookie, not overwrite the other one.

Probably the solution is on web.config.

On Config

Change the name value, to something different on your 2 apps, if you have the same domain and run on different directory/apps, or change also the domain value that used also to keep the cookie.

<authentication mode="Forms">
 <forms name=".CookieSuffix" domain="yoururl.com" ... />
</authentication>    

For example, on the 2 diferent web.config on your apps, place
on app 1: name=".app1"
on app 2: name=".app2"

Or on app 1: domain="app1.yoururl.com"
on app 2: domain="app2.yoururl.com"
if you separate your apps, base on url, or even try some similar aproces.

The cookie is keep, using the cookie name on the domain name, so this is the 2 values that you must try to seperate them.

Details on Form setup can be found here: http://msdn.microsoft.com/en-us/library/aa480476.aspx

Manual login

If you have the oportunity to make manual login the solution is on this function

FormsAuthentication.GetAuthCookie(cUserName, false, "cookiePath");
FormsAuthentication.SetAuthCookie(cUserName, false, "cookiePath");

You only need to use a diferent cookiePath, but, you must change many points on your program, and capture the process login, logout and Authenticate.

Hope this help you.

Aristos
thanks a lot, the config file worked!
Axarydax