具有用户权限的基于 JWT 令牌的授权 Asp.net core 2.0
Posted
技术标签:
【中文标题】具有用户权限的基于 JWT 令牌的授权 Asp.net core 2.0【英文标题】:JWT Token based Authorization with user permission 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 的东西 【参考方案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 挂接到你的包中的文档太多了。我为此编写代码示例超出了您问题的答案范围。你知道你需要做什么才能让它在许多博客中工作,那里有如何做到这一点的演示。如果您在发布新问题时遇到困难,我很乐意提供帮助。以上是关于具有用户权限的基于 JWT 令牌的授权 Asp.net core 2.0的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Node JS 中使用 jwt 授权具有不同令牌的所有用户