2009-12-27 81 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中