Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails中创建受密码保护的RSS源_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何在rails中创建受密码保护的RSS源

Ruby on rails 如何在rails中创建受密码保护的RSS源,ruby-on-rails,Ruby On Rails,在rails中创建RSS提要很容易。我需要一个简单的方法来密码保护RSS提要。我在考虑http基本身份验证 我在谷歌上搜索过,但找不到任何关于创建受密码保护的RSS的文章。只要在常规控制器上使用任何身份验证系统即可。如果用户已登录,并且会话处于活动状态,则他将能够下载提要。如knoopx所述,如果您使用类似的身份验证系统,则应该能够在控制器中指定身份验证类型。然后可以指定http基本身份验证。然后,如果您选择,您可以在RSS提要的URL中包含身份验证 e、 g: http://username:

在rails中创建RSS提要很容易。我需要一个简单的方法来密码保护RSS提要。我在考虑http基本身份验证


我在谷歌上搜索过,但找不到任何关于创建受密码保护的RSS的文章。

只要在常规控制器上使用任何身份验证系统即可。如果用户已登录,并且会话处于活动状态,则他将能够下载提要。

如knoopx所述,如果您使用类似的身份验证系统,则应该能够在控制器中指定身份验证类型。然后可以指定http基本身份验证。然后,如果您选择,您可以在RSS提要的URL中包含身份验证

e、 g:

http://username:password@example.com/rss
(很抱歉这样破坏URI,但是我没有足够的信誉点来发布多个链接:()

我的应用程序控制器中有这个

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\u filter:xml\u authorize
应用于我只想为xml请求提供密码保护,但仍想正常使用html的操作



这就是我得到灵感的地方。

RSS源上的HTTP身份验证与其他控制器操作有何不同?(这不一定是一个修辞性问题-它真的不同吗?)


你试过了吗?

提要应该定期获取,无需用户交互。 RSS提要可以由不同于浏览器的东西使用。例如, 我有一个手机,我可以从rss提要链接为开始屏幕创建一个小部件。功能很棒。不幸的是,这个小部件不能进行身份验证。 而且没有用户界面可以输入用户名和密码。因此,身份验证需要是url的一部分,并带有所有不好的安全隐患

另一方面,您不需要会话来回答提要请求

因此,解决方案是为用户创建一个特殊密钥,并将其存储在用户表中。 然后在显示rss提要的链接时使用它。在提要方法中,您使用此密钥检索用户,但不创建会话。这样,即使黑客以某种方式获得了有效密钥,黑客也只能查看rss提要,而不能访问应用程序的其余部分


如果您已经使用某个库进行身份验证,则可能已经为此实现了某种解决方案。在Authlogic中,是类SingleAccessToken,您需要向用户表中添加字符串类型的列“single\u access\u token”。然后Authlogic在保存用户记录时创建一些加密密钥。然后将此密钥添加为GET-参数'user_credentials'指向私有rss源的url

…但是,无论如何,密码都不应该以明文形式存储在数据库中,并且如果有人单击链接,那么他们的密码绝对会显示给任何可能与他们在一起的人,这是不安全的。Matchu,我同意密码永远不应该以明文形式存储密码中的xt。我只是把它放在那里作为一个可以实现的示例。显然,最好的方案是RSS客户端内置了身份验证机制。
def xml_authorize
  if request.format == Mime::XML
    authenticate_or_request_with_http_basic do |username, password|
      username == 'foo' && password == 'bar'
    end
  end
end