我使用devise作爲我的身份驗證解決方案,現在我正在考慮授權。在我的項目中,我(管理員)是唯一有權爲其他人創建帳戶的人。Devise/Rails - 如何只允許管理員爲他人創建賬戶?
我不知道是否有辦法做到這一點,而不需要太多破解。事實上,如果Devise已經登錄,Devise不允許用戶訪問註冊頁面。
感謝您的建議!
我使用devise作爲我的身份驗證解決方案,現在我正在考慮授權。在我的項目中,我(管理員)是唯一有權爲其他人創建帳戶的人。Devise/Rails - 如何只允許管理員爲他人創建賬戶?
我不知道是否有辦法做到這一點,而不需要太多破解。事實上,如果Devise已經登錄,Devise不允許用戶訪問註冊頁面。
感謝您的建議!
您可以嘗試rails_admin gem與Devise一起處理任何管理員特定的任務。您需要添加更多代碼才能進行設置,但至少可以避免在改變與Devise的交互方面對解決方案進行攻擊。
設置:skip => :registrations
也殺死了用戶編輯其用戶信息的能力。如果這不是你可以創建一個(最小)自定義註冊控制器後,你只是刪除new_user_registration_path
,同時保留edit_user_registration_path
。
# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
def new
# If you're not using CanCan, raise some other exception, or redirect as you please
raise CanCan::AccessDenied
end
end
# routes.rb
devise_for :users, :controllers => { :registrations => "registrations" }
一旦你這樣做,你還需要移動目錄views/devise/registrations
只是views/registrations
。
它實際上看起來像在Devise的後續版本中,您可以從模型中刪除「可註冊」聲明,它將爲您處理此問題。
它看起來不錯!我現在試試看,謝謝! – benoitr 2011-03-14 19:22:00
我通過devise_for:users,:skip =>:registrations跳過了路線。只是我必須設置一些授權到rails_admin,一切都完成了!非常感謝 – benoitr 2011-03-14 21:06:22
@benoitr - 沒問題,很高興我可以幫忙! – McStretch 2011-03-14 22:17:29