我正在使用Rails 3和Devise。有什麼方法可以在我的應用程序中設置「通用/根/萬能鑰匙」密碼 - 所以我可以用他們的電子郵件地址+通用密碼登錄到我的用戶帳戶?Rails 3 +設計:我如何設置「通用」密碼?
p.s:這可能是一個非常糟糕的身份驗證實踐,但由於某種原因,我需要編輯我的一些用戶。
我正在使用Rails 3和Devise。有什麼方法可以在我的應用程序中設置「通用/根/萬能鑰匙」密碼 - 所以我可以用他們的電子郵件地址+通用密碼登錄到我的用戶帳戶?Rails 3 +設計:我如何設置「通用」密碼?
p.s:這可能是一個非常糟糕的身份驗證實踐,但由於某種原因,我需要編輯我的一些用戶。
你非常不推薦你想要什麼。
執行此操作的方法是爲您的用戶定義角色,並添加具有特定角色的用戶可以編輯某些內容的界面。
如果你還想做你的方式,也許這樣做會延長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
文件,並寫下來)
但我再說一遍,這種想法是不正常
謝謝。我知道的完全不好的想法。只要做這個快速入門,一些快速編輯並切換回來。 – Stevie 2011-04-12 12:36:11
擴展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
從安全角度來看,這是瘋了!難道你不能只是做一個管理界面來執行你需要用戶做的任何事情嗎? – Ant 2011-04-12 09:45:15
你應該讓一個管理員用戶,並給他適當的權限來編輯其他用戶。 – hahuang65 2011-04-12 11:04:17