这是Resque, Devise and admin authentication问题的后续内容。
假设我们有:
User.last.role #=> 'admin'
新问题是:如何从这个访问当前用户(因为我有User.role,可以是'admin'或'user'):
require 'resque/server'
class SecureResqueServer < Resque::Server
before do
#redirect '/login' unless current_user.role == 'admin'
end
end
谢谢。
答案 0 :(得分:0)
我只有authlogic和Resque的经验,但这看起来很相关:
http://blog.kiskolabs.com/post/776939029/rails3-resque-devise
作者更新了他的博客并建议您将以下内容添加到您的路线中,显然可以根据您的具体需求进行定制:
authenticate :admin do
mount Resque::Server.new, :at => "/resque"
end
答案 1 :(得分:0)
嗯,一切都要简单得多。 要直接从Warden获取当前用户实例,您只需:
env['warden'].user
这样,使用上述的Devise和角色系统,您可以:
require 'resque/server'
class SecureResqueServer < Resque::Server
before do
redirect '/login' unless env['warden'].user.role == 'admin'
end
end