【发布时间】:2013-10-15 20:52:40
【问题描述】:
我有一个 Rails 应用程序,它对第三方 API 进行多次特定于用户的调用。他们在填写调查的过程中与大量数据交互,他们的进度存储在 HTML5 localStorage 中,直到他们到达调查结束,数据保存在本地数据库中并清除 localStorage。
API 调用需要在末尾添加一个标记作为“auth=”参数。现在,我让用户使用他们对该服务的用户名和密码登录我的应用程序,将这些凭据发布到该 API 的“会话”调用,并以 JSON 格式获取令牌。我将该令牌存储在控制器中的一个变量中,并使用它来进行连续的 API 调用并在我的应用程序中呈现用户的数据等。
我已经了解了很多关于 Rails 的知识,但对会话或身份验证几乎一无所知。一般来说,我还需要做些什么才能让这成为一个安全的场景吗?我觉得我错过了什么。
【问题讨论】:
-
只要我理解正确,我认为没问题。要做的一件事是确保您在生产环境中使用 HTTPS。可以看一下 Rails 3.1 force_ssl 方法,这很容易。在我的工作中,当用户登录时,我们从 facebook 获取访问令牌,并将该令牌存储在会话中。然后我们将向 facebook 的 api 发出请求。我唯一关心的可能是将个人信息存储在本地存储中,而不是将其加密在您的数据库中,但本地存储可能没问题,我只是不熟悉从安全角度来看它是如何工作的。
-
关于 localStorage 的要点。 (我不打算将令牌存储在那里,存储在那里的数据只是用户正在完成的调查的“进度标记”。)
-
啊,好吧。我不确定您是否存储了可能包含个人信息或其他内容的输入字段,我认为您在这方面做得很好。状态的本地存储是一个很好的用例。
标签: ruby-on-rails api session authentication