User.Identity返回错误的用户

时间:2017-12-15 02:22:13

标签: asp.net-mvc-5 asp.net-identity

目前我们正在开发2个网站,但它们共享一个数据库,这两个网站都使用Identity进行用户管理,例如登录,帐户设置等。

网站A和网站B的身份用户实体定义如下

interface Baz<T> extends TypeList<T, Long> {}
getGenericTypes(Baz.class, List.class) // {Long.class}
getGenericTypes(Baz.class, TypeList.class) // {T, Long.class}

UserA和UserB实体映射到数据库中的不同表。

问题如下

  • 在同一浏览器中启动网站A和B
  • 登录网站B - 没问题
  • 登录网站A - 没问题
  • 刷新网站B的索引页面,用户名显示登录网站A的一个错误,用户名在cshtml中得到如下:

    public class UserA : IdentityUser
    {
        ...
    
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<UserA > manager)
        {
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
    
            // Add custom user claims here
    
            return userIdentity;
        }
    }
    
    public class UserB : IdentityUser
    {
        ...
    
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<UserB > manager)
        {
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
    
            // Add custom user claims here
    
            return userIdentity;
        }
    }
    

任何想法或我是否需要提供更详细的信息?

1 个答案:

答案 0 :(得分:2)

它使用cookie来跟踪登录用户DefaultAuthenticationTypes.ApplicationCookie,这是预期的行为。如果您想要启用您要执行的操作,则必须使用Chrome配置文件之类的内容,或者您​​可以为其中一个应用程序重命名Cookie。这样的事情,http://tech.trailmax.info/2014/07/rename-authentication-cookie-name-of-asp-net-identity/