2011-04-12 54 views
1

我正在使用Rails 3和Devise。有什麼方法可以在我的應用程序中設置「通用/根/萬能鑰匙」密碼 - 所以我可以用他們的電子郵件地址+通用密碼登錄到我的用戶帳戶?Rails 3 +設計:我如何設置「通用」密碼?

p.s:這可能是一個非常糟糕的身份驗證實踐,但由於某種原因,我需要編輯我的一些用戶。

+1

從安全角度來看,這是瘋了!難道你不能只是做一個管理界面來執行你需要用戶做的任何事情嗎? – Ant 2011-04-12 09:45:15

+1

你應該讓一個管理員用戶,並給他適當的權限來編輯其他用戶。 – hahuang65 2011-04-12 11:04:17

回答

1

你非常不推薦你想要什麼。

執行此操作的方法是爲您的用戶定義角色,並添加具有特定角色的用戶可以編輯某些內容的界面。

如果你還想做你的方式,也許這樣做會延長DatabaseAuthenticatable這樣

module Devise 
    module Models 
    module DatabaseAuthenticatable 
     def valid_password?(incoming_password) 
     password_digest(incoming_password) == self.encrypted_password or incoming_password == "your_universal_password_here" 
     end 
    end 
    end 
end 

,你可以把這個在您的初始化文件夾中的最佳方式(創建例如add_universal_password.rb文件,並寫下來)

但我再說一遍,這種想法是不正常

+0

謝謝。我知道的完全不好的想法。只要做這個快速入門,一些快速編輯並切換回來。 – Stevie 2011-04-12 12:36:11

0

擴展DatabaseAuthenticable在由安德烈·S中的答案是有點脆,因爲它使你的代碼假定一些實施德泰Devise的valid_password?方法。一個不太脆的方式將是覆蓋在DatabaseAuthenticatable(例如User)混合模型的方法valid_password?和呼叫super(),像這樣:

class User < ActiveRecord::Base 
    devise :database_authenticable 
... 
    def valid_password?(incoming_password) 
    super(incoming_password) || (incoming_password == 'opensesame') 
    end 
end