【问题标题】:JWT Token based Authorization with user permission Asp.net core 2.0具有用户权限的基于 JWT 令牌的授权 Asp.net core 2.0
【发布时间】:2018-12-25 01:47:44
【问题描述】:

我创建了一个 JWT 令牌,声明为读取或写入或删除权限,如下图所示。

现在,管理员/普通用户都登录到系统。管理员和普通用户获取令牌并存储在本地存储中。

普通用户第一次无法获得读/写/创建/删除 UI 控件。令牌过期时间为 2 分钟。

现在管理员更改数据库中普通用户的权限如下 .

因此,普通用户的令牌不会过期。他仍然不会读写。如果令牌过期然后用户再次登录,则逻辑有效,然后他可以查看读/写 UI 控件

我怎样才能在管理员更改权限的同时实现这一点。

部分参考链接 https://jonhilton.net/identify-users-permissions-with-jwts-and-asp-net-core-webapi/

https://www.jerriepelser.com/blog/using-roles-with-the-jwt-middleware/

【问题讨论】:

  • 在JWT中只存储角色而不存储实际权限,然后在渲染时控制服务器端的权限如何?
  • 我需要刷新 Angular UI 组件,而不仅仅是 webapi 的东西

标签: c# asp.net-core jwt


【解决方案1】:

由于此逻辑在服务器中处理,您需要通知 UI 该用户的权限更改。在这种情况下,像 SignalR 这样很容易与 .NET Core 一起工作的东西可以完美运行。这可以提醒 UI 权限更改,并通过 websockets 事件向用户获取另一个 JWT 令牌,从而解锁 UI 逻辑。然后可以将其重新保存在该用户的本地存储中(显然,如果当前正在使用该平台)

https://docs.microsoft.com/en-us/aspnet/core/signalr/dotnet-client?view=aspnetcore-2.1

我认为 JWT 中没有预先构建的方式来做你想做的事情,JWT 为经过身份验证的用户创建令牌。到期并创建具有有效权限的新有效令牌取决于您。

【讨论】:

  • 关于如何将 SingalR 挂接到你的包中的文档太多了。我为此编写代码示例超出了您问题的答案范围。你知道你需要做什么才能让它在许多博客中工作,那里有如何做到这一点的演示。如果您在发布新问题时遇到困难,我很乐意提供帮助。
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 2016-11-18
  • 2015-07-15
  • 2019-12-16
  • 1970-01-01
  • 2020-09-13
  • 2018-12-28
  • 2019-03-20
相关资源
最近更新 更多