如果我的用户与我的 AspNetCore webapp 上的所需角色相关联,为啥我会被禁止?

Posted

技术标签:

【中文标题】如果我的用户与我的 AspNetCore webapp 上的所需角色相关联,为啥我会被禁止?【英文标题】:Why am I forbidden if my User is associated to the required Role on my AspNetCore webapp?如果我的用户与我的 AspNetCore webapp 上的所需角色相关联,为什么我会被禁止? 【发布时间】:2019-05-02 22:05:13 【问题描述】:

我正在尝试将角色添加到身份验证已经正常工作的 AspNet Core WebApp。

这是我在启动时所做的:

services
    .AddIdentity<User, Role>()
    .AddEntityFrameworkStores<IdentityContext>()
    .AddDefaultTokenProviders()
    .AddUserStore<UserStore<User, Role, IdentityContext, Guid>>()
    .AddRoleStore<RoleStore<Role, IdentityContext, Guid>>();

我为我的User 提供了之前创建的角色“Admin”和“SuperAdmin”,并为给定的控制器操作添加了以下过滤器:

[Authorize(Roles = "Admin")] 

但是,当我尝试访问该端点时,我得到了 403 禁止。

我不明白我错过了什么。

【问题讨论】:

拥有“超级管理员”角色的用户怎么样? 他们呢?对不起,我不明白这个问题。 配置身份不会自动使身份验证工作。您使用什么身份验证? 身份验证有效。我唯一添加的是授权属性中的角色。 【参考方案1】:

我发现了一个与我类似的问题。 该人回答了他自己的问题,但没有将其标记为答案。

基本上,我似乎必须在我生成的 JWT 中添加角色作为声明。

https://***.com/a/50444865/1826096

【讨论】:

以上是关于如果我的用户与我的 AspNetCore webapp 上的所需角色相关联,为啥我会被禁止?的主要内容,如果未能解决你的问题,请参考以下文章

aspnetcore 实现简单的伪静态化

控制器未加载.AspNetCore.Identity.Application用户cookie

如何使用 AutoLayout 使我的 UIImage 的高度与我的 UILabel 的固有高度相同?

向不与我的机器人共享服务器的用户发送消息

用户作为 ASP Net Core 中的范围服务 - 不好的做法?

aspnetcore 实现简单的伪静态化