【问题标题】:How to protect Doorkeeper route in Rails?如何保护 Rails 中的 Doorkeeper 路由?
【发布时间】:2016-09-23 12:40:52
【问题描述】:

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

例如,我希望这个 URL 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

提前感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    似乎 Doorkeeper 可以在它的初始化程序中处理。只需添加它即可。

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

    【讨论】:

      【解决方案2】:

      我认为通过设计你可以做这样的事情

      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? 方法。

      【讨论】:

      • 是的。但我认为最好的解决方案是使用门​​卫初始化中的逻辑。修复了问题。谢谢你的回答,我也试试。 :)
      • 它确实有效(我刚刚为自己测试过)。是的,如果 gem 允许在初始化程序中配置它,那将是正确的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2021-04-30
      • 2016-06-07
      • 1970-01-01
      • 2019-02-12
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      相关资源
      最近更新 更多