ruby-on-rails - 只允许一个用户成为管理员
问题描述
我正在用 rails 6、devise 和 cancan 创建一个网页。
我需要一个管理员角色,但我不想创建单独的模型,而是向 user is table 添加了一个布尔列,但事情就是这样,
如果有任何用户注册,那么任何用户只能通过将此列的值更改为 true 来授予管理员权限,这将是一个安全问题。
所以我想也许我会从“user_params”中删除“admin”,但是我必须从控制台进行这个更改,这还不够好。
我应该如何只将管理员授予特定用户,我的想法是我只允许第一个用户使用它,或者特定的电子邮件,但感觉很愚蠢,必须有一个更聪明的方法。
我如何让应用程序只有一个管理员可以让任何其他用户成为管理员,但只有他可以做到这一点,如果有任何普通用户注册,无论如何他都不能以任何方式操作此列?
此致
解决方案
admin
从user_params
注册控制器中删除。您不希望用户仅通过准备请求就成为管理员。- 引入第三列
super_admin
,如果您只需执行一次,则从控制台授予此角色。 super_admin
创建只有她可以admin
为所有用户更新的地方才能访问的视图和控制器。
推荐阅读
- java - 解释这段代码中发生了什么?(帮助解释类)
- javafx - 一对
在游戏菜单中 - java - 使用选择排序按区域对形状数组进行排序
- ruby-on-rails - 如何测试模型中是否使用 Active Storage 发送了新文件?
- api - 使用来自 API 的动态数据创建水平滚动视图
- c# - 用零填充字符串并将其传递到asp.net webforms中的另一个页面
- javascript - 在使用 Javascript 迭代添加元素时添加第二个元素?
- file - 在循环批处理中创建具有随机数值的 n 个文件
- asp.net-core - 适用于 Windows、AspNetCore 和 aspnet-webpack 热模块的 Docker
- html - HTTPS 迁移