在Devise on Rails beta 3中创建管理员用户

好的,当有人用我缺少的简单内容回答这个问题时,我可能会觉得很傻,但是...

我在Rails 3 Beta上有了一个全新的应用程序,并且正在使用devise进行身份验证。 我已经运行了所有评论,并且目前一切正常。 我已经创建了一个用户角色和一个管理员角色(按照以下说明进行操作:[https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role)]并且我已经注册 我自己是第一位用户,但如何注册或创建管理员角色用户? 来自设计人员的指示将管理员角色设置为不可注册,但是我不确定如果无法注册将如何创建管理员?

任何帮助,将不胜感激! 谢谢!

erskingardner asked 2020-07-20T22:02:57Z
6个解决方案
92 votes

对。 我觉得很蠢

如果还有其他人有一个同样空洞的时刻。 只需使用rails控制台创建admin用户:

➡ rails c
Loading development environment (Rails 3.0.0.beta3)
irb(main):001:0> admin = Admin.create! do |u|
irb(main):002:1* u.email = 'sample@sample.com'
irb(main):003:1> u.password = 'password'
irb(main):004:1> u.password_confirmation = 'password'
irb(main):005:1> end

这样就可以了。 现在,只需访问您的管理员登录路径并登录即可。

erskingardner answered 2020-07-20T22:03:35Z
13 votes

您真正想做的是创建种子数据。一种更标准的方法是将种子用户(和角色,如果要存储的话)添加到db / seeds.rb中。

例如在db / seeds.rb中:

roles = Role.create([{name: 'super_admin'}, {name: 'staff'}, {name:'customer'}])
users = User.create([{email: 'super@test.com', first_name: 'super', last_name: 'admin', password: '@dmin123', password_confirmation: '@dmin123', role: roles[0]}])

然后运行:

rake db:seed
paneer_tikka answered 2020-07-20T22:04:04Z
5 votes

这可能不适用于Devise(但我相信会这样),但是通常,如果您想播种admin用户但又不想将您的管理员密码存储在源代码管理中,则可以执行以下操作...

@user = User.find_by_email("admin@email.com")

unless @user
  # We are going to bypass both our assignment protection and validation
  # so we aren't storing the password in source control.
  #
  # This doesn't replace the need to change the password occasionaly, both
  # on the site and in source control.
  @user = User.create do |u|
    u.name = "Admin User"
    u.email = "admin@email.com"
    u.password_digest = "$2a$10$DUv/IUiLB34jhi3j4Z8MwwcaDlBmFe3rvcdXSzPKLzBOAMmD53UqW"
  end

  @user.save(:validate => false)

  # TODO make the user an admin
end

您可以使用要查找password_digest的密码在本地创建用户。

Lelon answered 2020-07-20T22:04:29Z
3 votes

@Stewart你是正确的。 在用户模型中使用admin标志是可以接受的,并且仍然可以与许多授权选项共存。 查看cancan文档中的Ability类,以获取有关其外观的示例:

def initialize(user)
  if user.admin?
    can :manage, :all
  else
    can :read, :all
  end
end

如果功能确实不同,或者授权要求(例如将子域添加到authkey中)不同,则具有多个授权模型会很有用。

另一种方法是向您的用户添加HABTM角色关系。 这是Tony Amoyal的不错的教程:[http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/]

genkilabs answered 2020-07-20T22:04:58Z
0 votes

尝试将/ sign_in附加到您的管理路径中,无论您将其设置为...我的都是

[HTTP://your site.com/admin/sign_in?unauthenticated=true]

kinet answered 2020-07-20T22:05:22Z
0 votes

有一种方便的方法来填充表-db / seed.rb文件。 只需在其中添加用于创建用户的脚本并运行:

rake db:seed

在下面可以看到带有emailusername字段的seed.rb模型的示例:

# Inserting default security users
users = {

    admin: {

        username: 'admin',
        email: 'admin@gmail.com',
        password: 'adminpass',
        password_confirmation: 'adminpass',
        is_admin: true
    },

    administrator: {

        username: 'administrator',
        email: 'administrator@gmail.com',
        password: 'administrator',
        password_confirmation: 'administrator',
        is_admin: true
    }
}

users.each do |user, data|

  user = User.new(data)

  unless User.where(email: user.email).exists?
    user.save!
  end
end

请注意,此处将进行设备验证。

在这里,您可以找到使用seed.rb文件的更多示例,这是rayn的rails cast。

gotqn answered 2020-07-20T22:05:56Z
translate from https://stackoverflow.com:/questions/2708417/creating-an-admin-user-in-devise-on-rails-beta-3