[英]How to have seperate sessions on 2 asp.net applications
我在同一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")
});
}
使这两个应用程序具有各自独立的会话,我缺少什么? 提前致谢。
否
在您的评论中,您说您正在将Identity与MVC 5一起使用。可能在App_Start文件夹中有一个名为Startup.Auth.cs的文件。 它包含配置身份验证的部分(OWIN)启动类的第二部分。
在此类中,您应该配置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))
}
});
这非常简单...为每个站点提供自己的应用程序池。 应用程序池在那里提供了一定程度的隔离/安全性...就像避免会话中的数据交叉一样。 最好的事情是,只需10秒即可解决您的问题。 我希望这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.