设计。获取current_user角色

时间:2011-09-07 11:17:35

标签: ruby-on-rails devise resque

这是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

谢谢。

2 个答案:

答案 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