目前我正在我的项目中使用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
答案 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