如何在2个asp.net应用程序上进行单独的会话

时间:2014-07-01 06:18:57

标签: asp.net .net session iis identity

我在同一个IIS(7.5)上的同一个应用程序池中有两个asp.net应用程序(.NET 4.5)。他们的身份验证表来自两个不同的数据库我的问题是,当我登录到一个应用程序时,我也会登录到另一个应用程序(即使其他应用程序没有相同的用户ID)。

显然,这两个应用程序共享同一个会话。我更新了每个应用程序中的Web.config文件,如下所示:

<sessionState
  cookieName="some_unique_name"
  timeout="30">
</sessionState>
<membership defaultProvider="SqlProvider">
  <providers>
    <clear/>
    <add 
      name="SqlProvider" 
      type="System.Web.Security.SqlMembershipProvider" 
      connectionStringName="AuthCorporate"
      applicationName="some_unique_name"/>
  </providers>
</membership>

它可能与配置身份和身份验证有关。 Startup.Auth.cs 中的 ConfigureAuth()如下所示:

public void ConfigureAuth(IAppBuilder app)
{
    // Enable the application to use a cookie to store information for the signed in user
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login")
    });
}

我错过了使这两个应用程序有自己独立的会话?提前谢谢。

不然

2 个答案:

答案 0 :(得分:1)

在您的评论中,您说您正在使用Identity与MVC 5.可能在App_Start文件夹中有一个名为Startup.Auth.cs的文件。这包含部署(OWIN)Startup类的第二部分,其中配置了身份验证。

在这个课程中你应该配置cookieauthentication,可能是一个独特的cookiedomain / cookiename:

   app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                CookieDomain = ".My1stApp.com",
                CookieName = "App1CookieName",
                LoginPath = new PathString("/Account/Login"),
                Provider = new CookieAuthenticationProvider
                {
                    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                        validateInterval: TimeSpan.FromMinutes(30),
                        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });

答案 1 :(得分:0)

非常简单......为每个站点提供自己的应用程序池。应用程序池提供了一定程度的分离/安全性......就像避免会话中的数据交叉一样。最好的是它只需要10秒钟来解决您的问题。我希望这会有所帮助。