我已经成功创建了一个简单的MVC 6应用程序,它使用我自己的ApplicationUser,ApplicationUserStore(实现IUserStore和IUserPasswordStore)和ApplicationUserManager(扩展UserManager)。登录现在可以完美运行。现在我想扩展我的项目以支持我的控制器中的注释,如下所示:
[Authorize(Roles = "TestRole")]
public IActionResult Trips()
{
...
}
因此我也创建了自己的ApplicationRole,ApplicationRoleManager,ApplicationRoleStore并在我的Startup中注册了它们:
services.AddIdentity<ApplicationUser, ApplicationRole>(config =>
{
config.User.RequireUniqueEmail = true;
config.Password.RequiredLength = 8;
config.Cookies.ApplicationCookie.LoginPath = "/Auth/Login";
config.Cookies.ApplicationCookie.AutomaticAuthenticate = true;
}).AddUserStore<ApplicationUserStore<ApplicationUser>>()
.AddRoleStore<ApplicationRoleStore<ApplicationRole>>()
.AddUserManager<ApplicationUserManager>()
.AddRoleManager<ApplicationRoleManager>();
我现在的问题是注释根本不起作用。实际上我希望以某种方式触发我的ApplicationRoleStore中的Roles方法(来自IQueryableRoleStore)。
我是否会错过我绑定的某个地方,或者我对身份/角色概念有完全错误的想法?
答案 0 :(得分:2)
授权属性:
[Authorize(Roles = "TestRole")]
public IActionResult Trips()
{
...
}
不会调用任何身份信息。它只会检查当前用户是否处于角色&#34; TestRole&#34;并且只有在用户担任角色时才允许访问。这将是对角色cookie的检查。
您仍然需要构建自己的用于管理角色成员资格的用户界面,添加从角色中删除用户,以便将该角色转换为用户的Cookie。
如果您需要更多想法,我有一个项目here,它实现了角色管理以及没有实体框架的身份