代码之家  ›  专栏  ›  技术社区  ›  Carlos Liu

使用者标识返回错误用户

  •  1
  • Carlos Liu  · 技术社区  · 7 年前

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

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

    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;
        }
    }
    

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

    问题如下

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

      <div>@User.Identity.Name</div>
      

    有什么想法吗?或者我需要提供一些更详细的信息吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Ola Ekdahl    7 年前

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