2011-06-02 35 views

回答

0

您是否在Devise中使用lockable策略?

如果是這樣,在被登錄後重定向到控制器,你可以添加的before_filter,做這樣的事情:

current_user.lock_access! if current_user && current_user.created_at.year == "2010" 

而且你還需要手動用戶退出,可能像這樣的東西:

sign_out current_user 
0

我認爲你的問題有兩個部分:

  1. 根據一些標準(例如,帳戶創建日期),你要授權用戶執行某些操作

  2. 你想用設計進行驗證

注意,有認證的差(你是你說你是誰)和授權(你可以做你正在請求的東西),而且他們通常使用不同的軟件來實現。

例如,您可以使用Devise進行身份驗證,並使用CanCan來管理授權(CanCan上的railscast:http://asciicasts.com/episodes/192-authorization-with-cancan)。

使用CanCan,您只需允許用戶根據其帳戶的created_at屬性執行操作,否則請調用Devise的authorize!方法。

+0

我使用CanCan但如何在ability.rb中使用created_at字段進行訪問? – 2011-06-02 15:24:37

+1

類似於'can:manage,Project if user.account.created_at.year <2011'(更多信息請參見http://asciicasts.com/episodes/192-authorization-with-cancan)。然後在用戶未被授權時捕獲異常(請參閱https://github.com/ryanb/cancan在第3點)。 – 2011-06-02 16:14:08