不存在的寶石,那下面的事情工具:Rails的基於角色的身份驗證與存儲在數據庫角色
- 用戶可以有多種角色
- 每個角色都有權限
- 每個權限只是布爾 組
- 角色和權限存儲在數據庫中(最重要的)
例如,我想這樣的事情:
if current_user.can?(:read_all, :list_of_orders)
...
end
和can?
方法應該搜索,是否有任何角色允許它。
不存在的寶石,那下面的事情工具:Rails的基於角色的身份驗證與存儲在數據庫角色
例如,我想這樣的事情:
if current_user.can?(:read_all, :list_of_orders)
...
end
和can?
方法應該搜索,是否有任何角色允許它。
定義能力繼Zippie的問題,我建議你去黃燦燦的,但你也可以用它一起進行身份驗證。看到以下鏈接,你會發現有用的Rails 3 Authentication and Authorization with Devise and CanCan (Part 1) & Rails 3 Authentication and Authorization with Devise and CanCan (Part 2)。
你可能有這樣的事情在你的ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
# raise user.role?(:administrator).inspect
if user.role? :administrator
can :manage, :all
can :manage, User
elsif user.role? :employee
can :read, :all
end
end
end
所以,在你的意見,你可以這樣做
您也可以使用can?
在你的控制器創建您必要的過濾器。
見制訂用戶認證,你可以在那裏定義你的角色:
https://github.com/plataformatec/devise
,甚至更好,用康康舞輕鬆地結合起來:
https://github.com/ryanb/cancan/wiki/Role-Based-Authorization
你可以試試康康舞的寶石,它功能強大
https://github.com/ryanb/cancan
例如:
<% if can? :update, @article %>
<%= link_to "Edit", edit_article_path(@article) %>
<% end %>
你可以在一個ability.rb
can :manage, Article # user can perform any action on the article
can :read, :all # user can read any object
can :manage, :all # user can perform any action on any object
是的,cancan是一個很好的解決方案,但我需要dynamic(在運行時)管理角色。 – Drakmail 2013-03-16 19:10:00
我對cancan很瞭解,但是它在文件中定義了角色,並且我無法在應用程序運行時添加一些新角色。 – Drakmail 2013-03-16 19:13:23
經過一番沉思之後,我希望使用設計模式字段中存儲的cancan和序列化角色數組。只是因爲不需要角色權限的運行時管理:) – Drakmail 2013-03-16 20:20:11