【问题标题】:Create custom role handling in ASP.NET 5 Identity 3.0 (without EF)在 ASP.NET 5 Identity 3.0(无 EF)中创建自定义角色处理
【发布时间】:2016-03-14 21:27:03
【问题描述】:

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

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

【问题讨论】:

  • 嗨,马可!您可以通过 dawidr@epoczta.pl 与我联系吗?我有一些关于在 ASP.NET 5 中实现角色和自定义身份用户实现的问题。

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


【解决方案1】:

授权属性:

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

不会调用任何身份信息。它只会检查当前用户是否在角色“TestRole”中,并且仅在用户在角色中时才允许访问。这将检查角色 cookie。

您仍然需要构建自己的 UI 来管理角色成员资格,添加从角色中删除的用户,以便将该角色放入用户的 cookie。

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

【讨论】:

  • 谢谢乔。 “检查角色cookie”是什么意思?此检查的代码在哪里?由于我的用户不需要他们自己的角色,我实际上不需要 UI 来管理角色。我可以忍受一组硬编码的固定角色。现在我要详细检查我们的项目。
猜你喜欢
  • 2013-11-10
  • 2016-04-25
  • 2018-12-27
  • 2015-07-21
  • 2015-07-16
  • 2016-10-24
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多