我有一个问题可能很容易解决,但激烈的谷歌搜索并没有帮助我。问题如下:我有一个带有身份验证系统的Rails应用程序。系统的工作方式是有一个Admin用户可以创建其他用户。问题是,我只是重置了我的操作系统,现在一切都需要再次连接,包括这个管理员用户。之前,你可以通过应用程序来完成它,但不再需要这个了。所以现在,您需要使用sqlite3手动创建Admin用户。所以我需要做一些事情:
sqlite3 db/development.sqlite3 "INSERT INTO users VALUES(1,'admin-name','admin-email','admin-password','admin-password',1,1,1,1)"
但这显然不起作用,因为“admin-password”未加密。尝试登录应用程序然后给我
BCrypt::Errors::InvalidHash in SessionsController#create
正如所料。
如何插入加密密码,以便我可以以管理员身份登录应用程序?
感谢您的帮助:-) 谢谢你,最诚挚的问候!
答案 0 :(得分:1)
我会做两件事之一:
您选择哪一个取决于您打算如何使用它。如果需要创建管理员用户(我希望不是),则rake任务更有意义。如果您只需要清除数据库并使用可用的管理员重新创建数据库,那么db seed就是您要走的路径。
我避免使用原始SQL方法的原因是它太容易搞砸了,而且你可能在数据库中有敏感数据,你不希望任何人进行更改。像这样的自动化流程可以在将来节省大量的工作。
答案 1 :(得分:0)
这是一个如何运作的例子
#small script that automatically creates an admin user
puts 'creating admin user...'
namespace :db do
namespace :admin_setup do
task :admin => :environment do
admin = User.create(
:name => "admin",
:email => "admin",
:password => "admin",
:password_confirmation => "admin"
)
end
end
end
将此文件放入名为something.rake的文件到文件夹路径/到/ application / lib / tasks中并通过
运行rake db:admin_setup:admin