首页 > 解决方案 > 只允许一个用户成为管理员

问题描述

我正在用 rails 6、devise 和 cancan 创建一个网页。

我需要一个管理员角色,但我不想创建单独的模型,而是向 user is table 添加了一个布尔列,但事情就是这样,

如果有任何用户注册,那么任何用户只能通过将此列的值更改为 true 来授予管理员权限,这将是一个安全问题。

所以我想也许我会从“user_params”中删除“admin”,但是我必须从控制台进行这个更改,这还不够好。

我应该如何只将管理员授予特定用户,我的想法是我只允许第一个用户使用它,或者特定的电子邮件,但感觉很愚蠢,必须有一个更聪明的方法。

我如何让应用程序只有一个管理员可以让任何其他用户成为管理员,但只有他可以做到这一点,如果有任何普通用户注册,无论如何他都不能以任何方式操作此列?

此致

标签: ruby-on-railsdevise

解决方案


  1. adminuser_params注册控制器中删除。您不希望用户仅通过准备请求就成为管理员。
  2. 引入第三列super_admin,如果您只需执行一次,则从控制台授予此角色。
  3. super_admin创建只有她可以admin为所有用户更新的地方才能访问的视图和控制器。

推荐阅读