【问题标题】:Using claims for application preferences使用应用程序偏好声明
【发布时间】:2020-01-20 06:02:08
【问题描述】:

我正在构建一个使用用户声明身份的 Web 应用程序。 我的网络应用程序有(少量)用户偏好设置,例如应用程序 UI 语言。

在自定义用户声明中存储这样的设置会是不好的做法吗?这不是严格意义上的声明,但从技术上讲,声明机制非常适合这些类型的设置。

【问题讨论】:

  • 这没有错。我已经这样做多年了,没有遇到任何问题。
  • 为什么将首选项存储在 cookie 中?您可能只在后端需要它(您也可以在其中缓存它)。在 SPA 的情况下,请求一次首选项并使用其他选项在客户端缓存它。声明保留在 cookie 中并不意味着您应该为此使用它。当您更改存储机制时,例如从 cookie 切换到 JWT 访问令牌,那么这将适得其反,因为无法更改 JWT。最重要的是,偏好不是身份的一部分,所以不要仅仅因为你可以就误用它。从设计的角度来看,这是不好的做法。不管这是否有效。

标签: c# .net claims-based-identity


【解决方案1】:

在令牌中保存应用程序 UI 语言将导致以下结果:用户更改 UI 语言,这很可能会触发对数据库的调用并将数据保存在那里,但令牌包含旧值,所以这不会自动更新(动态),它将在下次登录或生成令牌时更新。

那么这是一种不好的做法吗?不,不是,这取决于您的应用程序以及您希望它的动态程度。如果您在应用程序登录时生成新令牌,您可以执行以下操作 - 当用户更改语言时,给他一个“弹出”消息,这将在应用程序重新启动或按钮重新启动时生效,这将生成一个新的令牌。

这又取决于您如何检查 UI 应该是什么语言。如果它从令牌中检查,则可以完成上述操作。

【讨论】:

  • 设置更改时只需重新生成 cookie - 简单。可能会更改安全标记。
  • 是的更好,取决于它是如何写的:)
猜你喜欢
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多