【问题标题】:Devise. Get current_user role设计。获取 current_user 角色
【发布时间】:2012-03-08 11:19:58
【问题描述】:

这是Resque, Devise and admin authentication问题的追随者。

假设我们有:

User.last.role #=> 'admin'

新问题是:如何从这里获得对当前用户的访问权限(因为我有 User.role,可以是“管理员”或“用户”):

require 'resque/server'

class SecureResqueServer < Resque::Server

  before do
    #redirect '/login' unless current_user.role == 'admin'
  end

end

谢谢。

【问题讨论】:

    标签: ruby-on-rails devise resque


    【解决方案1】:

    我只有 authlogic 和 Resque 的经验,但这似乎是相关的:

    http://blog.kiskolabs.com/post/776939029/rails3-resque-devise

    作者更新了他的博客,并建议您将以下内容添加到您的路线中,显然是根据您的特定需求量身定制的:

    authenticate :admin do
      mount Resque::Server.new, :at => "/resque"
    end
    

    【讨论】:

    • 我没有 :admin 命名空间。正如我上面提到的,只有:用户和用户角色。
    【解决方案2】:

    嗯,一切都简单多了。 要直接从 Warden 获取当前用户实例,您只需:

    env['warden'].user
    

    这样,使用上述的设计和角色系统,您可以:

    require 'resque/server'
    
    class SecureResqueServer < Resque::Server
    
      before do
        redirect '/login' unless env['warden'].user.role == 'admin'
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多