首页 > 解决方案 > ASP.Net Core 2(.1.2) - 无需信任客户端即可保存用户数据

问题描述

我目前正在使用 ASP.Net Core 2.1.2,但找不到解决问题的方法。

目前我正在与 Angular 5 一起构建一个控制面板。用户的数据存储在 MySQL 数据库中。要访问控制面板,您必须登录 - 服务器将加载一些数据。重要的是管理员级别(1-?) - 某些操作只允许具有至少一个级别的管理员。对于身份验证,我使用的是 JWTBearer,它由客户端在每个 HTTP 操作中作为标头发送。但在某些方法中,我还想检查管理员级别。

现在我可以在哪里为客户存储数据,比如他的管理员级别?使用索赔保存它是否安全?但是,客户端不能在客户端修改它并发送“自定义”标头吗?我还尝试将数据放入字典并使用 (HttpContext.)User(类型为 ClaimsPrinciple)作为键,但这不起作用,因为用户在每个请求中总是不同的。

是否有任何安全的方法来存储用户的数据?

标签: httpasp.net-coreclientstore

解决方案


您可以安全地将您的管理员级别信息存储在声明中,除非您担心有人会阅读它。无法在 JWT 中修改声明,因为它的值是由只有您应该知道的密钥签名的,并且在修改后此令牌将无效。阅读本文以获取有关 JWT 的更多信息


推荐阅读