.Net Web Api(后端)如何存储用户自定义权限列表

问题描述 投票:0回答:1

在我的应用程序中,对各个选项的访问是由各个权限定义的,例如 user_module_view、user_add、user_edit、user_delete、allowed_id_client...,以便在最终结果中,您可以根据最终客户端的需要定义任何角色,具体取决于他的角色需要。

我想在用户登录后存储此类权限的列表,以便每次向 API 发送请求时都不必从数据库访问它们。

我的第一个想法是将它们保存在 JWT 令牌中,该令牌存储在浏览器的 cookie 中。但结果发现生成的访问令牌是22KB,所以在保存cookie时,swagger返回错误:

CORS

Network Failure

URL scheme must be "http" or "https" for CORS request. 

并且cookie不保存,其限制为4KB。当访问令牌减少时,例如到10kb,不会出现swagger中的错误,方法返回正确的结果,但是cookie无论如何都没有保存。

是否有任何其他安全的方法可以防止权限列表中的外部干扰,从而允许将这样的列表保留在缓存中并维护其余的完整 API?我不想保留权限列表,例如API 中的字典。

c# .net asp.net-web-api user-permissions
1个回答
0
投票

根据您所查看的规模,您可以查看简单的会话,其中会话 ID 通过 cookie 发送,然后您在后端的会话存储中查找它(例如 redis/memcache)。

另一种选择是将 JWT 令牌存储在客户端的 LocalStorage 中,并将其作为 HTTP 标头发送(通常使用 Bearer 授权)。

规模部分在这里很重要 - 因为当您放置 redis/memcache 来查找会话时,它很快就会成为瓶颈(无论是性能方面还是金钱方面),因为它会检查每个请求v/s简单验证从客户端收到的 JWT 签名后进行条件检查。

© www.soinside.com 2019 - 2024. All rights reserved.