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