2013-10-28 47 views
1

我有一個問題可能很容易解決,但強烈的谷歌搜索並沒有幫助我。問題如下:我有一個帶有認證系統的Rails應用程序。該系統的工作方式有一個可以創建其他用戶的Admin用戶。問題是,我剛剛重置了我的操作系統,現在需要再次連接所有內容,包括此Admin用戶。以前,你可以通過應用程序來完成,但這已經不再需要了。所以現在,您需要使用sqlite3手動創建Admin用戶。所以,我需要做的是這樣的:SQLite:手動插入加密的密碼

sqlite3 db/development.sqlite3 "INSERT INTO users VALUES(1,'admin-name','admin-email','admin-password','admin-password',1,1,1,1)"

但是,這顯然是行不通的,因爲「管理員密碼」是不加密的。嘗試登錄到應用程序,然後給了我

BCrypt::Errors::InvalidHash in SessionsController#create

預期。

如何插入加密密碼,以便我可以以管理員身份登錄到應用程序?

我很感謝您的幫助:-) 謝謝,最好的問候!

回答

1

我會做兩件事情之一:

  1. 創建一個使用用戶模型
  2. 有一個創建的管理員用戶,再次使用User類數據庫種子文件創建admin用戶rake任務處理密碼加密。

你選擇哪一個取決於你打算如何使用它。如果通常需要創建管理員用戶(我不希望),那麼耙子任務更有意義。如果您只需要擦除數據庫並使用可用的管理員重新創建數據庫,那麼db種子就是要走的路徑。

我會避免原始SQL方法的原因是它的方式太容易搞砸了,再加上你可能會在數據庫中的敏感數據,你不希望不管是誰進行更改訪問。像這樣自動化流程可以在未來節省大量的工作量。

+0

我想運行一個實例rake任務是一個很好的解決方案。我會進入這一點,並讓我知道,一旦我得到它的工作。 – user2902965

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叫成文件夾路徑/到/應用/ lib目錄/任務文件並通過

rake db:admin_setup:admin