2009-12-27 60 views
4

在rails中創建RSS提要非常簡單。我需要一種簡單的方法來密碼保護RSS提要。我正在考慮http基本身份驗證。如何在rails中創建密碼保護的RSS提要

我使用Google搜索,但找不到任何有關創建密碼保護的RSS的文章。

回答

2

只需使用您在常規控制器上使用的任何身份驗證系統即可。如果用戶登錄,並且會話處於活動狀態,則他將能夠下載該提要。

0

就像knoopx所說的,如果使用像authlogic這樣的認證系統,您應該能夠在控制器中指定認證類型。然後你可以指定http基本認證。然後,如果您選擇,可以在RSS Feed的URL中包含身份驗證。

如:

http://username:[email protected]/rss

(不好意思去打破的URI像,但我沒有足夠的信譽分發布多個鏈接:()

+0

...但是,密碼永遠不應該以數據庫中的明文形式存儲,並且如果有人點擊某個鏈接,他們的密碼就會顯示出來,絕對任何可能與他們在一起的人都是不安全的。 – Matchu 2009-12-27 23:27:04

+0

Matchu,我同意密碼不應該以純文本形式存儲在密碼中。我只是把它放在那裏作爲可以實現的一個例子。顯然,最好的情況是RSS客戶端內置了認證機制。 – 2009-12-28 02:11:17

4

我有這樣的我ApplicationController中

def xml_authorize 
    if request.format == Mime::XML 
    authenticate_or_request_with_http_basic do |username, password| 
     username == 'foo' && password == 'bar' 
    end 
    end 
end 

然後,我只是一個適用於before_filter :xml_authorize,我想用密碼保護的XML請求只,b的動作ut仍然想用html正常提供服務。


Here的我來自哪裏得到的靈感。

1

Feed意味着在沒有用戶交互的情況下定期提取。 RSS-Feeds可以通過與瀏覽器不同的東西來消費。例如, 我有一個手機,我可以從rss-feed-link創建一個用於啓動屏幕的小部件。很棒的功能。不幸的是,身份驗證不適用於此小部件。 而且沒有用戶界面輸入用戶名和密碼。因此,身份驗證需要成爲網址的一部分,並具有所有不良安全隱患......

另一方面,您不需要會話來回答訂閱請求。

因此,解決方案是爲用戶創建一個特殊的密鑰,並將其存儲在用戶表中。 然後在顯示rss-feed鏈接時使用它。在feed-method中,您使用此鍵檢索用戶,但不創建會話。這樣,即使黑客以某種方式得到了有效的密鑰,黑客也只能查看rss-feed,而不能訪問應用程序的其餘部分。

如果您已經使用某個庫進行身份驗證,則可能已經爲此實施了一些解決方案。在Authlogic中,Is是類SingleAccessToken,您需要將字符串類型的'single_access_token'添加到用戶表。然後authlogic在保存用戶記錄時創建一些神祕的關鍵。您將此密鑰作爲GET參數'user_credentials'添加到專用rss-feed的url中