我在React中构建了一个登陆页面,其中访问者提交了一些数据(包括姓名和电话),这些数据通过HTTP发送到Rails 4.2后端。
现在,为了使着陆页能够将数据发布到后端,需要进行某种身份验证,因为只有注册的工作人员才能访问数据。 Rails后端目前使用常规的Devise用户/密码登录到后端。
我考虑过制作虚拟帐户并在登录页面的POST标题上对授权令牌进行硬编码,但这显然是一个很大的安全漏洞,因为任何人都可以在提交表单时看到硬编码令牌。
如何保护目标网页以用户无关的方式向后端服务器发送/接收数据(因为访问者不会创建帐户,他们只是填写表格及其详细信息)?
答案 0 :(得分:1)
我不是rails用户。但至于你的API,就像几乎所有RESTful API后端一样,我认为rails具有公共/私有API的概念。我会创建用于从用户公开获取数据的API,以便人们可以在没有身份验证的情况下发送他们的信息,并且其他API路由是私有的。
在java spring框架中,我可以允许每个人都可以访问API路由,例如登录和通用(无私有信息)API路由,并且每个其他API路由都是私有的,需要身份验证(如auth-token)。
答案 1 :(得分:0)
当您执行登录流程并且用户输入密码并点击发送时,一旦您的后端验证详细信息,您将不得不使用JWT **(Json Web令牌)创建签名授权令牌并发送此授权令牌到前端。
然后,每当前端调用后端时,它必须在进行API调用之前将此标记附加到标头中。并且后端应该对令牌进行解码以找出哪个用户正在请求它以及ttl *是否在作为发布令牌的限制内。
如果两种情况都通过,后端应该发送请求的数据,或者它应该发送HTTP CODE-403 / Forbidden,然后应该在前端处理以注销用户并打开登录页面试。
*(生存时间根据此令牌自签发/登录时起有效的小时数计算)
** JWT基本上是用户数据的base-64编码数据(并由你的后端用唯一键签名)。用户的解码JWT令牌很可能如下所示:
--env=prod