在ASP.NET 5 Identity 3.0中创建自定义角色处理(不含EF)

时间:2015-12-09 14:44:56

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc asp.net-identity-3

我已经成功创建了一个简单的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)。

我是否会错过我绑定的某个地方,或者我对身份/角色概念有完全错误的想法?

1 个答案:

答案 0 :(得分:2)

授权属性:

[Authorize(Roles = "TestRole")]
public IActionResult Trips()
{
  ...
}

不会调用任何身份信息。它只会检查当前用户是否处于角色&#34; TestRole&#34;并且只有在用户担任角色时才允许访问。这将是对角色cookie的检查。

您仍然需要构建自己的用于管理角色成员资格的用户界面,添加从角色中删除用户,以便将该角色转换为用户的Cookie。

如果您需要更多想法,我有一个项目here,它实现了角色管理以及没有实体框架的身份