基于角色的路由认证
role based route authentication
我一直在使用 devise 和 cancancan 进行身份验证和授权,resque 用于后台作业。我一直在关注 Ryans 截屏视频 271,并看到了下面 routes.rb 文件的代码片段。
authenticate :admin do
mount Resque::Server, :at => "/resque"
end
到经过身份验证的用户,但在我的情况下,我只有用户 table 并且 admin 也是由角色列分隔的用户,现在我想根据用户角色对 resque 服务器路径的路由进行身份验证和授权,我怎样才能解决这个问题?
authenticate :user do
mount Resque::Server, :at => "/resque"
end
对于登录用户来说工作正常,但我希望只有管理员用户才能访问它。任何帮助将不胜感激。
# config/initializers/admin.rb
class CanAccessResque
def self.matches?(request)
current_user = request.env['warden'].user
return false if current_user.blank?
Ability.new(current_user).can? :manage, Resque
end
end
# routes.rb
namespace :admin do
constraints CanAccessResque do
mount Resque::Server, at: 'resque'
end
end
# ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.is_admin?
can :manage, Resque
end
end
end
# user.rb
class User < ActiveRecord::Base
def is_admin?
# your admin logic here for example:
self.role == "admin"
end
end
或者要了解更多信息,请查看此博客:resque-admin-in-rails-routes-with-cancan
希望对您有所帮助。
我一直在使用 devise 和 cancancan 进行身份验证和授权,resque 用于后台作业。我一直在关注 Ryans 截屏视频 271,并看到了下面 routes.rb 文件的代码片段。
authenticate :admin do
mount Resque::Server, :at => "/resque"
end
到经过身份验证的用户,但在我的情况下,我只有用户 table 并且 admin 也是由角色列分隔的用户,现在我想根据用户角色对 resque 服务器路径的路由进行身份验证和授权,我怎样才能解决这个问题?
authenticate :user do
mount Resque::Server, :at => "/resque"
end
对于登录用户来说工作正常,但我希望只有管理员用户才能访问它。任何帮助将不胜感激。
# config/initializers/admin.rb
class CanAccessResque
def self.matches?(request)
current_user = request.env['warden'].user
return false if current_user.blank?
Ability.new(current_user).can? :manage, Resque
end
end
# routes.rb
namespace :admin do
constraints CanAccessResque do
mount Resque::Server, at: 'resque'
end
end
# ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.is_admin?
can :manage, Resque
end
end
end
# user.rb
class User < ActiveRecord::Base
def is_admin?
# your admin logic here for example:
self.role == "admin"
end
end
或者要了解更多信息,请查看此博客:resque-admin-in-rails-routes-with-cancan
希望对您有所帮助。