如何为rails应用添加管理员,修改用户和应用内容?

时间:2017-02-11 19:26:13

标签: ruby-on-rails ruby heroku devise web-deployment

我最近完成了michael hartl的rails 4教程。 他创建了一个用于在用户中添加管理列的迁移。

    class AddAdminToUsers < ActiveRecord::Migration[5.0]
    def change
    add_column :users, :admin, :boolean, default: false
    end
    end

然后他更改了种子文件以播种用户

   User.create!(name:  "Example User",
   email: "example@railstutorial.org",
   password:              "foobar",
   password_confirmation: "foobar",
   admin: true)

但是出于以下原因,创建这样的管理员来管理网络应用的内容将不安全: 1.任何可以查看种子文件代码的人最终都会找到关于admin用户的信息 2.如果我创建了一个管理页面,用户可以注册并成为管理员,这也是恶意行为。

所以应该是最好的方式。

2 个答案:

答案 0 :(得分:0)

在制作时,您可能会登录到您的服务器,打开Rails控制台并手动创建第一个管理员。

答案 1 :(得分:0)

任何可以查看种子文件的人都可以看到schema.rb文件,在那里他可以找到你有哪些安全功能 - 而且,很可能会看到其他文件代码,比如你检查的控制器这个“admin”标志或任何其他花哨的授权相关代码。

我建议尽管:

  • 将此密码设置为随机密码并使用“忘记密码”功能将其重置
  • 要求在用户的“password_change_required”标志设置为true时更改密码(因此只需使用此“password_change_required”向用户添加另一个字段,并在用户登录后请求更改密码)
  • 通过生产计算机上的rails c设置第一个用户

而且,最重要的是,不要忘记过滤掉users_controller中的“admin”参数(或者您对用户进行更新的任何地方)。