首页 > 解决方案 > 将登录用户的角色存储在 vuex 安全/最佳实践中吗?

问题描述

我正在使用 Firebase 进行身份验证并设置自定义声明来处理角色/授权。这是一个非常典型的应用程序,有 2 个角色:“管理员”、“查看者”。

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

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

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

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

谢谢。

标签: firebasevue.jsauthenticationvuexroles

解决方案


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

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


推荐阅读