我正在使用设计作为我的身份验证解决方案,现在我正在考虑授权。在我的项目中,我(管理员)是唯一有权为其他人创建帐户的人。
我想知道是否有办法在没有太多黑客的情况下做到这一点。实际上,如果Devise已经登录,则Devise不允许用户访问注册页面。
感谢您的建议!
答案 0 :(得分:9)
设置: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
。
答案 1 :(得分:3)
您可以将rails_admin gem与Devise一起使用来处理任何管理员特定的任务。您需要添加更多代码才能进行设置,但至少可以避免在更改与Devise的交互方面破解解决方案。
答案 2 :(得分:1)
实际上,在Devise的更高版本中,您可以从模型中删除“可注册”声明,它将为您解决此问题。