【问题标题】:Administrator Policy not working on Authorize attribute管理员策略不适用于授权属性
【发布时间】:2016-09-16 09:52:58
【问题描述】:

我希望将我的后端管理区域限制为具有管理员角色的人员。我读过一篇文章说政策是要走的路。但是,每当我添加属性时,我都会被重定向到 AccessDenied 页面。

我显然有这个角色

这是数据库

StartUp.cs

        var defaultPolicy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .RequireRole("Administrator")
            .Build();


        services.AddMvc(setup =>
        {
            setup.Filters.Add(new AuthorizeFilter(defaultPolicy));
        });

属性定义

[Authorize("Administrator")]
  • 那么,如果我既通过了身份验证,又拥有了角色,为什么我什么也做不到?
  • 您如何命名策略,例如 Authorize("Administrator") 我不确定“Administrator”的来源(文章也不清楚)。

【问题讨论】:

  • 即使我删除了所有策略内容并尝试根据角色名称进行检查(这是传统方式?)它仍然会将我转储到未经授权的页面。 [授权(角色=“管理员”)]

标签: asp.net-core authorization asp.net-identity


【解决方案1】:

好的,一定是一篇旧文章,否则角色检查完全不起作用。不过,文档中的策略语法似乎很有效。

启动

        services.AddMvc();

        services.AddAuthorization(options =>
        {
            options.AddPolicy("RequireAdministratorRole", policy => policy.RequireRole("Administrator"));
        });

控制器

[Authorize(Policy = "RequireAdministratorRole")]
public class AdminDashboardController : Controller

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多