我已经成功创建了一个简单的 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)会被触发。
我是否错过了我绑定的某个地方,或者我对身份/角色概念有完全错误的想法?