目前我们正在开发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实体映射到数据库中的不同表。
问题如下
刷新网站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;
}
}
任何想法或我是否需要提供更详细的信息?
答案 0 :(得分:2)
它使用cookie来跟踪登录用户DefaultAuthenticationTypes.ApplicationCookie,这是预期的行为。如果您想要启用您要执行的操作,则必须使用Chrome配置文件之类的内容,或者您可以为其中一个应用程序重命名Cookie。这样的事情,http://tech.trailmax.info/2014/07/rename-authentication-cookie-name-of-asp-net-identity/。