如何保护Rails中的门卫路线?

时间:2016-09-23 12:40:53

标签: ruby-on-rails oauth-2.0 ruby-on-rails-4.2 doorkeeper

我在Rails 4.X应用程序中使用了Doorkeeper gem。有没有办法保护管理Oauth应用程序的路线?

例如,我希望此网址http://localhost:3000/oauth/applications可供标记为管理员的Devise用户使用。

我当前的routes.rb看起来像这样。

Rails.application.routes.draw do
 mount RailsAdmin::Engine => '/admin', as: 'rails_admin'

 use_doorkeeper
 devise_for :users

先谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

似乎门卫可以处理它的初始化器。只需添加它就可以了。

 admin_authenticator do
   redirect_to new_user_session_url unless current_user && current_user.admin?
 end

答案 1 :(得分:0)

我认为你可以做这样的事情

Rails.application.routes.draw do
  mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
  devise_for :users
  authenticate :user, lambda { |u| u.admin? } do
  # the same would be authenticate :user, -> (u) { u.admin? } do
    use_doorkeeper
  end
end

这表明您的User回复admin?方法。