2013-04-24 103 views
1

在管理部分,我顯示了當前登錄用戶的列表。 現在管理員可以選擇一個或多個用戶/用戶並銷燬他們的會話(註銷他們)。 我無法確定從哪裏開始,請幫助我。使用devise gem rails註銷用戶

回答

3

你可以通過在用戶對象使用sign_out方法在控制器動作:

# Make sure only admins can do this 
def sign_out_user 
    @user = User.find(params[:id])  
    sign_out @user 
end 

此處瞭解詳情:

http://rubydoc.info/github/plataformatec/devise/master/Devise/TestHelpers%3asign_out

+0

是否有必要使用用戶控制器或任何控制器會做? – 2013-04-24 14:58:40

+0

我會爲管理員用戶創建一個特定的操作。我會更新我的答案。 – AlexBrand 2013-04-24 14:59:54

+0

這將允許您註銷特定用戶 – AlexBrand 2013-04-24 15:02:30

1

考慮用戶是收集你的需要的用戶,

for user in users 
    sign_out user 
end 

它應該解決您的問題。

希望它能幫助:)

+0

它註銷管理員而不是用戶。 – 2013-04-24 19:04:02

+0

您是否驗證過「用戶」收藏?它可能是,在'用戶'集合中發送的管理對象。 – Prem 2013-04-25 03:28:58

+0

我給用戶對象sign_out我也試過abort @ user.to_yaml,它是用戶數據,但它註銷了管理員 – 2013-04-25 05:05:52

0

由設計所提供的sign_out方法也無濟於事。我知道文檔說它會註銷你所要求的「資源」,但如果你自己挖掘這些寶石(設計和監督),你會發現當你給它一個對象,就像用戶一樣,它只會找出什麼該對象所屬的作用域(即:user),並將其全部作用域註銷。

Devise中的作用域是登錄名稱空間。您可能有一個需要登錄的Customer模型,但也需要一個需要登錄的Vendor模型,並且您會爲這些模型使用不同的範圍。大多數應用程序只使用一個與用戶模型綁定的範圍。

您可能正在爲會話存儲使用:cookie_store,這是Rails的默認設置。在這種情況下,除了您自己之外,不可能註銷任何單個用戶。 Devise會將您的登錄信息存儲在會話中,該會話存儲在Cookie中,而不是存儲在數據庫中。他們的瀏覽器有憑據,所以你不能直接刪除它。

相關問題