2011-09-10 256 views
0

在我的web應用程序中,用戶登錄後會創建一個新會話,因此直到他關閉瀏覽器後,他纔會保持登錄狀態。管理員想禁止瀏覽器仍處於打開狀態的用戶時出現此問題。即使用戶被禁止並且無法再登錄,他仍然保持登錄狀態,直到他關閉瀏覽器或手動註銷爲止。這絕對應該修復。ROR用戶身份驗證

是否可以將驗證方法添加到每個控制器的每個動作?當然,我的意思是一個聰明的方式 - 不復制/粘貼100次。

回答

3

以下內容添加到您的應用程序控制器:

before_filter :sign_out_banned_user 

def sign_out_banned_user 
    if current_user.banned? 
    session[:current_user_id] = nil 
    redirect_to root_path, :notice => "You are banned" 
    return false 
    end 
end 
+0

你能解釋爲什麼返回false? – NARKOZ

+1

你可以嘗試去掉'return false'。如果沒有'return false',在'redirect_to'之後代碼將會繼續,並且將會繼續執行。然後會有重複的'redirect_to',因爲你進入了操作。 – PeterWong

1

,必須重置會話也是我的想法。

+0

我添加了重新設置會話的行:) – PeterWong