【发布时间】:2014-07-01 06:18:56
【问题描述】:
我在同一个 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 个不同的应用程序放在一个应用程序池中可能不是最好的主意。应用程序池用于分隔需要不同安全级别的应用程序。
-
您在使用 ASP.NET Membership 提供程序吗?如果是这样,您应该在 web.config 中明确设置 applicationName(对于每个应用程序都是唯一的)。它在
标记中...但请向我们提供更多信息 -
@Jeroen1984 我正在使用 ASP.Net Membership 提供程序。但是我还没有在我的 Web.config 中指定与
标记相关的任何内容。你能指点一下如何指定吗?欣赏它。 -
@Nay 如果这是一个新项目,并且您使用的是 Framework 4.5,我真的建议不要使用 Membership Provider。这是处理身份验证/授权的 .Net 2.0 方式。 ASP.NET 身份系统是成员资格的替代品:asp.net/identity。它还具有一些内置功能,例如双因素身份验证、第 3 方登录提供程序(google facebook 等)、密码恢复、电子邮件确认等。如果您使用会员提供程序来实现这一点,这些事情会花费您很多时间。您应该认真考虑是否真的要使用过时的框架
-
我很抱歉@Jeroen1984,我实际上已经在使用 Identity。我的两个应用程序都在 MVC 5 上。
标签: asp.net .net session iis identity