将登录用户的角色存储在 vuex 安全/最佳实践中吗?

Posted

技术标签:

【中文标题】将登录用户的角色存储在 vuex 安全/最佳实践中吗?【英文标题】:Is storing a logged in user's role in vuex safe/best practice? 【发布时间】:2021-12-23 03:11:58 【问题描述】:

我正在使用 Firebase 进行身份验证并设置自定义声明以处理角色/授权。这是一个非常典型的应用程序,有 2 个角色:'admin','viewer'。

我的计划是在注册时向新用户添加“管理员”自定义声明。然后管理员可以在应用中添加一个角色为“查看者”的用户,这将调用一个 firebase 函数来设置“查看者”自定义声明。

当用户登录时,我会阅读他们的声明并将值作为 role: 'admin' 或 role: 'viewer' 存储在 vuex 商店中。

稍后在我的应用程序中,我计划使用 getter 检查角色并根据用户是否是管理员来隐藏/显示 UI 的不同元素。我还使用 vuex-persistedstate 插件将存储保存在本地存储中。

这一切看起来是个好计划吗?在 vuex 中存储 -> 角色:'admin' 是否存在任何安全问题。或者这是一个标准的应用架构?

谢谢。

【问题讨论】:

如果您已经在服务级别实现了安全性,我认为这应该不是问题。 Firebase 客户端 SDK 将身份验证数据存储在浏览器中,您可以随时检查这些数据。 显示或隐藏 UI 不会以任何方式影响安全性。它不会导致任何安全问题。它是否是“最佳”实践总是取决于具体情况,这就是 SO 禁止基于意见的问题的原因。 【参考方案1】:

您是否将此信息存储在 Vuex 或任何其他状态管理系统中都没有关系。 Firebase SDK 身份验证已在客户端浏览器的 token 中公开此信息。

您应该访问 Cloud Functions 中的自定义声明,并确定用户是否有权执行此类任务。此外,一个不错的计划是使用带有自定义声明的安全规则来保护您的服务。

【讨论】:

以上是关于将登录用户的角色存储在 vuex 安全/最佳实践中吗?的主要内容,如果未能解决你的问题,请参考以下文章

将当前用户数据从本地存储存储到vue存储的最佳实践?

问:如何查看 Vuex 中的角色?

Web应用程序中安全问题的最佳实践

PostgreSQL 9.5 - 行级安全/ROLE 最佳实践

管理不同的用户角色 ASP.NET MVC [关闭]

存储用户权限的最佳方式?