2011-06-08 47 views
0

我使用rails 3和設計。我想在下面的工作流程中進行構建。從電子郵件驗證設計用戶

  1. 文章在網站上提交,需要管理員批准。
  2. 網站將網站管理員的電子郵件的鏈接頁面,管理員可以查看編輯和批准的文章

我有了這個實現,但是,如果管理員當前未登錄進入該網站管理員被反彈回根路徑未被認證。

是否有通過電子郵件發送的鏈接可以充當特定管理員的身份驗證?

+0

這是否意味着任何追隨該鏈接的人都被認證爲管理員? – Christian 2011-06-08 03:52:06

+0

是的,但鏈接只發送給授權人員,鏈接大概會在一段時間後過期......我知道這不是最安全的方法,但這是一個博客正在討論的內容,而不是高度敏感的內容。 – Intentss 2011-06-08 04:03:59

回答

0

您想查看設計的令牌認證。這允許您使用一次性密鑰來授權用戶通過URL參數進行訪問。

查看更多信息在這裏。 http://zyphmartin.com/blog/simple-auth-token-example-with-devise

此外,您可以簡單地創建每個資源的身份驗證令牌並將身份驗證值存儲在數據庫中。當您轉到資源ID和身份驗證令牌中資源傳遞的批准URL時。這比以管理員身份登錄用戶更安全。

如果您需要更多幫助,請告訴我。

0

您可以將其實現爲自定義控制器操作。

您可以通過在您的:before_filter調用中添加:except => :custom_action鍵來關閉控制器中給定操作的設計驗證。

您可以在包含article_id和admin_id的鏈接中包含查詢字符串。然後在自定義控制器操作中,您可以通過文章表中的額外字段來檢查這篇文章是否已經過審覈。如果有的話,你可以保釋。如果沒有,那麼您可以允許主持人批准或不贊成,請將主持人標誌設置爲true,並感謝主持人的工作。

如果你想變得非常棘手,你可以讓URL包含一個MD5哈希值,你可以用它作爲關鍵字而不是文章ID。您可以將其存儲在文章模型的額外字段中。這將使它在中等能力的短暫窗口內被欺騙的可能性要小得多。

伊恩。

+0

唯一沒有解釋的是如何讓Devise繼續:) – 2011-06-08 04:21:28

+0

我想這就是我的意思是定製設計行動,一個從您的身份驗證模式中排除。您也可以實現一個完全獨立的控制器,它完全不在認證方案之內。 – ipd 2011-06-08 04:26:24

0

您可以添加到控制器的動作(這是你的URL將指向),然後通過添加以下內容到控制器從認證排除:

before_filter :authenticate_user!, :except => [:review_article] 

你可能包括某種形式的鍵入URL(例如文章的MD5,如Ian建議的那樣),並檢查review_article