Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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 4中向请求添加令牌?_Ruby On Rails_Ruby On Rails 4_Authentication - Fatal编程技术网

Ruby on rails 如何在Rails 4中向请求添加令牌?

Ruby on rails 如何在Rails 4中向请求添加令牌?,ruby-on-rails,ruby-on-rails-4,authentication,Ruby On Rails,Ruby On Rails 4,Authentication,我有一个上传应用程序,可以被多个其他应用程序访问。我希望这些应用程序的用户安全性与此上载中心联合。我使用在应用程序之间共享的HTTP令牌来实现这一点 我已经阅读了5篇关于如何在Rails中保护API的不同文章。我已经在upload hub应用程序中正确设置了所有内容。我在我的用户表中设置了密钥,并且在其他应用程序中与用户表共享了此密钥。我已经准备好代码来检查此密钥,并找到相应的订阅。失败时,用户将重定向到源应用程序的登录页面 只有一件事。我找不到任何地方如何创建实际的请求!我希望其他应用程序中的

我有一个上传应用程序,可以被多个其他应用程序访问。我希望这些应用程序的用户安全性与此上载中心联合。我使用在应用程序之间共享的HTTP令牌来实现这一点

我已经阅读了5篇关于如何在Rails中保护API的不同文章。我已经在upload hub应用程序中正确设置了所有内容。我在我的
用户
表中设置了密钥,并且在其他应用程序中与用户表共享了此密钥。我已经准备好代码来检查此密钥,并找到相应的订阅。失败时,用户将重定向到源应用程序的登录页面

只有一件事。我找不到任何地方如何创建实际的请求!我希望其他应用程序中的用户单击“上载”链接,将他们带到该应用程序。当然,创建链接没有问题。问题是,如何将令牌添加到请求中

看,我不是在向API发出编程请求。。。用户实际上是从一个应用程序转到另一个应用程序。我希望upload hub应用程序检查请求并说“哦,有这么大的长键。让我看看是否可以找到与此相关的用户。我显然不会将其放入查询字符串中

我自己想到的唯一一件事就是用一点
jQuery
代码构造一个表单,表单中有一个隐藏项,其中包含键,它将从当前页面上的一个隐藏字段中获取,然后对upload hub应用程序执行
POST
。这不是真正的代币,但它是可行的。肯定有更好的方法吗

更新 我去了jQuery“postGo”“路由,其中我构造了一个带有隐藏字段的表单,并将其作为参数发送到另一个应用程序。不过我忘了保护你不被伪造。然而,即使关闭了protect_from_fackery,Rails仍然会从外部请求中剥离所有参数,除了
控制器
操作
。无文档功能?或者我错过了文件


真的,我只想在几个应用程序上使用SSO。看起来我必须创建一个宣誓提供者。当然,在我拥有的一些应用程序上,要联合一个简单的会话,有很多困难需要克服。

这里有一种可能的方法

  • 在应用程序的upload controller方法中,不直接重定向用户,而是向upload hub应用程序发出请求
  • 在upload hub应用程序中,添加控制器方法并生成令牌,将其和用户凭据存储在redis或您选择的其他存储中,然后使用令牌响应应用程序
  • 应用程序的upload controller方法从upload hub接收响应,然后将302响应返回给客户端,令牌包含在重定向url中
  • 客户端重定向到上载中心
  • 上载集线器路由器接受此格式,令牌可以是查询字符串
  • 签入redis并通过令牌找到它并匹配用户的凭据

  • 您可以使用自定义标题来执行此操作吗?如果是,请使用
    请求
    对象。将用户重定向到其他应用程序时,请在标题中设置适当的值,看看让你的应用程序向后端的上载中心发出请求并让中心返回令牌,然后你的应用程序触发重定向?令牌可以在重定向响应中提供给客户端,客户端将其用作查询字符串,以便您的上载中心可以对其进行检查(将其存储在redis中)。这可能是
    强参数的问题。查看您的日志,并尝试查找类似以下内容:
    unpermittedparameters