【发布时间】:2017-12-13 02:49:57
【问题描述】:
我正在尝试使用我现有的身份验证系统来保护/sidekiq 路由。我将 JWT 与 Rails-api 一起使用。我能够读取 JWT 令牌以检查用户是否具有管理员角色,但它仅适用于初始请求。 Sidekiq 面板中的后续请求检索 CSS 和 JS,但由于令牌未传递给它们而失败。
我的routes.rb 中有以下路线:
mount Sidekiq::Web => '/sidekiq', constraints: AdminConstraint.new
然后lib/admin_constraint.rb:
class AdminConstraint
def matches?(request)
token = request.params['token']
unless token
puts 'AdminConstraint: No token in params found'
return false;
end
user = Knock::AuthToken.new(token: token).entity_for(User)
unless user
puts "AdminConstraint: No user found for token #{token}"
end
if user.admin?
puts "AdminConstraint: User with user_id #{user.id} is an admin, access granted"
true
else
puts "AdminConstraint: User with user_id #{user.id} is NOT an admin, rejecting"
false
end
end
end
我正在浏览器中访问路线,如下所示:https://example.com/sidekiq?token=<token>
有什么方法可以为后续请求保留令牌吗?我似乎无法在这个 lib 文件中使用 Rails 会话。
【问题讨论】:
标签: ruby-on-rails jwt sidekiq rails-api