ASP.Net Core 2(.1.2) - 无需信任客户端即可保存用户数据
ASP.Net Core 2(.1.2) - Save user data without having to trust the client
我目前正在使用 ASP.Net Core 2.1.2,但找不到解决我的问题的方法。
目前我正在与 Angular 5 一起构建一个控制面板。
用户的数据存储在 MySQL 数据库中。
要访问控制面板,您必须登录 - 服务器将加载一些数据。重要的是 admin-level (1-?) - 某些操作仅允许具有至少一个级别的管理员进行。
对于身份验证,我使用 JWTBearer,客户端在每次 HTTP 操作时将其作为 header 发送。但在某些方法中我还想检查 admin-level.
现在我可以在哪里存储客户的数据,比如他的 admin-level?
用 Claim 保存它安全吗?但是,客户端是否可以在客户端修改它并发送 "custom" header?
我还尝试将数据放入字典中并使用 (HttpContext.)User(类型为 ClaimsPrinciple)作为键,但这行不通,因为 User 在每个请求中总是不同的。
有没有安全的方法来存储用户的数据?
您可以安全地将您的管理员级别信息存储在 Claim 中,除非您担心有人可以读取它。无法在 JWT 中修改 Claim,因为它的值是由只有你应该知道的密钥签名的,修改后此令牌将无效。阅读 this article 以获取有关 JWT
的更多信息
我目前正在使用 ASP.Net Core 2.1.2,但找不到解决我的问题的方法。
目前我正在与 Angular 5 一起构建一个控制面板。 用户的数据存储在 MySQL 数据库中。 要访问控制面板,您必须登录 - 服务器将加载一些数据。重要的是 admin-level (1-?) - 某些操作仅允许具有至少一个级别的管理员进行。 对于身份验证,我使用 JWTBearer,客户端在每次 HTTP 操作时将其作为 header 发送。但在某些方法中我还想检查 admin-level.
现在我可以在哪里存储客户的数据,比如他的 admin-level? 用 Claim 保存它安全吗?但是,客户端是否可以在客户端修改它并发送 "custom" header? 我还尝试将数据放入字典中并使用 (HttpContext.)User(类型为 ClaimsPrinciple)作为键,但这行不通,因为 User 在每个请求中总是不同的。
有没有安全的方法来存储用户的数据?
您可以安全地将您的管理员级别信息存储在 Claim 中,除非您担心有人可以读取它。无法在 JWT 中修改 Claim,因为它的值是由只有你应该知道的密钥签名的,修改后此令牌将无效。阅读 this article 以获取有关 JWT
的更多信息