【发布时间】:2011-03-14 19:15:17
【问题描述】:
我正在使用设计作为我的身份验证解决方案,现在我正在考虑授权。在我的项目中,我(管理员)是唯一有权为他人创建帐户的人。
我想知道是否有一种方法可以做到这一点而无需太多的黑客攻击。事实上,如果用户已经登录,Devise 不允许用户访问注册页面。
感谢您的建议!
【问题讨论】:
标签: ruby-on-rails authorization devise
我正在使用设计作为我的身份验证解决方案,现在我正在考虑授权。在我的项目中,我(管理员)是唯一有权为他人创建帐户的人。
我想知道是否有一种方法可以做到这一点而无需太多的黑客攻击。事实上,如果用户已经登录,Devise 不允许用户访问注册页面。
感谢您的建议!
【问题讨论】:
标签: ruby-on-rails authorization 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。
【讨论】:
您可以尝试将 rails_admin gem 与 Devise 结合使用,以处理任何特定于管理员的任务。您需要添加更多代码来设置它,但至少可以避免在更改与 Devise 的交互方面绕过解决方案。
【讨论】:
实际上,在 Devise 的更高版本中,您只需从模型中删除“可注册”声明,它就会为您解决这个问题。
【讨论】: