user.Identity返回错误的用户



当前我们正在开发两个网站,但是它们共享一个数据库,两个网站都将身份用于用户管理,例如。登录,帐户设置等

网站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和USEB实体被映射到数据库中的不同表。

问题如下

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

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

有任何想法,或者我需要提供一些更详细的信息?

它使用cookie跟踪已登录的用户,defaultauthenticationypes.applicationcookie,所以这就是预期的行为。如果您想启用自己想做的事情,则必须使用诸如Chrome配置文件之类的内容,或者可以将Cookie重命名为其中一个应用程序。这样的事情,http://tech.trailmax.info/2014/07/rename-authentication-cookie-name-name-of-asp-net-net-indistity/。

相关内容

  • 没有找到相关文章