The*_*hts 29 ruby-on-rails resque devise
使用Resque和Devise,我有用户的角色,如:
User.first.role #=> admin
User.last.role #=> regular
Run Code Online (Sandbox Code Playgroud)
我想为Resque设置身份验证.所以,在config/routes.rb里面我有:
namespace :admin do
mount Resque::Server.new, :at => "/resque", :as => :resque
end
Run Code Online (Sandbox Code Playgroud)
当然,所有登录用户都可以访问它.
有没有办法使用User.role的角色?只有具有"admin"角色的用户才能访问它.
非常感谢.
jpe*_*thy 39
在您的routes.rb
文件中使用路由约束:
resque_constraint = lambda do |request|
request.env['warden'].authenticate? and request.env['warden'].user.admin?
end
constraints resque_constraint do
mount Resque::Server, :at => "/admin/resque"
end
Run Code Online (Sandbox Code Playgroud)
请参阅此博客文章和评论.希望它能帮到你.
Yos*_*sho 20
在你的routes.rb
文件中:
authenticate :user, lambda {|u| u.role == 'admin' } do
mount Resque::Server.new, :at => "/resque"
end
Run Code Online (Sandbox Code Playgroud)
此外,请确保您devise_for :users
在该文件中的某个位置
cic*_*oon 13
您可以尝试以这种方式继承Resque :: Server类:
require 'resque/server'
class SecureResqueServer < Resque::Server
before do
redirect '/login' unless some_condition_is_met!
end
end
Run Code Online (Sandbox Code Playgroud)
并以这种方式在您的路线中使用它:
mount SecureResqueServer.new, :at => '/resque'
Run Code Online (Sandbox Code Playgroud)
我从这个博客获得了这些信息.试试看.
总有新的解决方案,在您的routes.rb中为rails> 3.1输入:
authenticate :admin do
mount Resque::Server.new, :at => "/resque"
end
Run Code Online (Sandbox Code Playgroud)
别忘了:
devise_for :admins
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7000 次 |
最近记录: |