自定义身份验证检查延迟web gem?

时间:2017-01-17 16:47:45

标签: ruby-on-rails rubygems rails-authorization

目前我正在我的项目中使用gem class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception before_action :authenticate before_action :check_pricer_role, except: [:export_for_customer] helper_method :check_pricer_role def check_pricer_role unless current_user && (current_user.pricer? || current_user.admin?) redirect_to errors_not_found_path end end end 。我有多个用户角色,我不希望销售角色的用户可以访问页面延迟的Web后台界面。我已经有了一种方法来检查我的应用程序控制器中的身份验证。但是,我不知道如何使它在路径文件中工作。任何建议都将不胜感激。

已更新:我没有使用Devise gem。我推出了自己的身份验证。

application_controller.rb

Rails.application.routes.draw do
  # How to apply the defined authentication here?
  mount Delayed::Web::Engine, at: '/jobs'
end

的routes.rb

--format=%H%n%s%n%b%n==END== master-1.0.83..HEAD

1 个答案:

答案 0 :(得分:0)

好的,我已经解决了这个问题。事实证明,我可以根据他的身份验证令牌找到当前用户,该身份验证令牌保存在Request对象内部(同样,我不会使用任何宝石进行身份验证,我会使用自己的身份进行身份验证,但我不会&#39;不管怎么说,这就是问题所在。 这是完整的解决方案,以防有人遇到同样的困难:

    class AuthConstraint
      def matches?(request)
        current_user ||= User.find_by_auth_token(request.cookie_jar['auth_token']) if request.cookie_jar['auth_token']
         current_user.present? && !current_user.sales?
      end
    end

    Rails.application.routes.draw do
        mount Delayed::Web::Engine, at: '/jobs', :constraints => AuthConstraint.new
        //Other resources ........ 
    end