让我们假设我们有一个网站,其中有:两个身份验证cookie
- 管理部分
- 客户端部分
- 游客(游客)部分
显然,最后一个(访客部分)可以由所有人访问,而管理员部分 - 仅由管理员和客户端部分 - 只能由注册客户访问。 管理员和客户端有不同的模型类(相应的管理员和用户),存储在不同的数据库中,我们希望为他们每个人使用不同的身份验证Cookie。 是否可以使用ASP.NET Core Identity?
我们试图AddIdentity初始化过程中使用CookieName财产,但似乎ApplicationCookie访问那里 - 是同一个对象,因此第二个定义,简单地重写第一个:
services
.AddIdentity<User, UserRole>(opts => {
opts.Cookies.ApplicationCookie.CookieName = "Client";
opts.Cookies.ApplicationCookie.LoginPath = new PathString("/login");
. . . . . .
});
services
.AddIdentity<Admin, AdminRole>(opts => {
//the following lines rewrite cookie options from client's to admin's
opts.Cookies.ApplicationCookie.CookieName = "Admin";
opts.Cookies.ApplicationCookie.LoginPath = new PathString("/admin/login");
. . . . . .
});
你不应该为每个角色拥有一个身份,你应该为每个安全需求设置一个角色。您很可能需要一个自定义IdentityStore,您可以根据某些逻辑决定是否查询User或Admin db。 –
您可以将它们存储在不同的数据库中,但从应用程序的角度来看,它们都是USERS。我知道这并不回答你的问题,但我想说的是,也许你应该重新考虑你的设计。 – JuanR
听起来像2(或3)不同的应用程序给我。 – Mike