2011-02-06 19 views
2

在Ruby on Rails的,有沒有在控制器限制某些方法來誰已經登錄的用戶,或具有特殊權限的用戶的一個標準呢?比方說,爲了簡單起見,我有一個博客,我希望每個人都能夠進入「名單」,並在我的控制器「秀」的方法,但我只想要登錄的用戶訪問「編輯」,「更新」 「創造」等方法。我是否必須對邏輯進行編程,或者至少對這些函數中的每一個函數進行調用以檢查用戶訪問權限,還是有更正式的方法?在Ruby中,如何將我的控制器中的方法限制爲特定用戶?

+0

如果未經授權,您應該添加before_filter以檢查您是否傾向於重定向 – apneadiving 2011-02-06 13:21:49

回答

4

可以使用before_filter

Class blogController 
before_filter :authorize, :except => [:list, :show] 

def authorize 
    #Your code to get a logged in user 
    redirect_to blog_path unless user 
end 
2

這就是所謂的Before filter

例如

PostsController < ApplicationController 
    before_filter :authenticate_admin!, :only => [:index, :show] 
+0

這會強制任何人查看索引或顯示爲管理員。我認爲你的意思是:除了而不是:只有? – robzolkos 2011-02-06 13:29:27

1

退房Devise特別是Devise Wiki針對你的問題的一些例子。這將有助於登錄和身份驗證。還檢查出CanCan。這將有助於授權。

隨着設計可以讓每個人都獲得了「指數」(列表)和「作秀」行爲,並限制人們使用在博客/後控制器頂部以下行的其他行爲。

before_filter :authenticate_user! :except=>[:index, :show] 
相關問題