Asp.net 如果用户';尽管不同的版本使用不同的数据库,但我一直都在直播网站上

Asp.net 如果用户';尽管不同的版本使用不同的数据库,但我一直都在直播网站上,asp.net,asp.net-mvc,asp.net-identity,Asp.net,Asp.net Mvc,Asp.net Identity,我已经构建了一个ASP.NET MVC web应用程序,它使用ASP.NET身份验证 我已将该网站发布到一个开发人员网址和一个测试网址。如果我登录到dev站点,然后浏览到测试站点,它会自动让我登录。但是,这是一个错误,因为站点的不同版本使用不同的用户表,因此在搜索经过身份验证的用户的用户ID时会遇到问题,因为它找不到该用户ID 我现在可以通过先注销开发站点,然后登录测试站点来解决这个问题。但是,这在将来不会成为一个选项,因为一些客户端将有权访问站点和live站点的预览版本,因此,当他们错误登录时

我已经构建了一个ASP.NET MVC web应用程序,它使用ASP.NET身份验证

我已将该网站发布到一个开发人员网址和一个测试网址。如果我登录到dev站点,然后浏览到测试站点,它会自动让我登录。但是,这是一个错误,因为站点的不同版本使用不同的用户表,因此在搜索经过身份验证的用户的用户ID时会遇到问题,因为它找不到该用户ID

我现在可以通过先注销开发站点,然后登录测试站点来解决这个问题。但是,这在将来不会成为一个选项,因为一些客户端将有权访问站点和live站点的预览版本,因此,当他们错误登录时,我需要将他们注销,因为他们已登录到其他版本


是否仍然可以阻止此错误发生?

尝试更改身份验证cookie名称。您可以在网站的web.config中执行此操作

<authentication mode="Forms">
  <forms name=".{{YOURCOOKIE_NAME}}" loginUrl="~/Account/SignIn" />
</authentication>


只需将
{{YOURCOOKIE\u NAME}}
更改为所需的名称。因此,如果您在DEV和TEST中有不同的cookie名称,它应该可以解决您的问题。

我猜在您的配置中,您有如下内容:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    CookieName = <read from config>
});
app.UseCookieAuthentication(新的CookieAuthenticationOptions
{
AuthenticationType=DefaultAuthenticationTypes.ApplicationOkie,
CookieName=
});

CookieAuthenticationOptions有一个名为CookieName的字符串属性,可用于更改cookie的名称。您可以将实际的cookie名称放入配置中,并在启动时从中读取。

您可能正在使用
OWIN
身份验证管道和
ASP.NET标识
在配置身份验证时,应该使用

app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new Microsoft.Owin.PathString("/Account/Login"),
            CookieName = ".AspNet.Cookies"
    });

CookieName
必须不同。或者,您也可以显式定义
CookiePath
CookieDomain
,以准确显示应用程序的路径或域。

通常通过子域来实现。登录到
dev.something.com
的人将不会登录
www.something.com
。尝试查看涉及的登录cookie的范围。还可以确保同一个cookie不允许您访问这两个站点,但这意味着登录其中一个站点将有效地将您从另一个站点注销,而您可能不希望这样做。。。