13

进行身份验证的最佳方法是什么?

在前端我使用 Angular.js

后端:Ruby on Rails

Rails 应用程序用作我的前端的 API。

更新: 这将是单页应用程序。前端将使用 Angular.js 开发,后端使用 Ruby on Rails。理想情况下,我想将后端构建为 json 中返回的资源集合。

我搜索安全实施的最佳方法。

当用户打开应用程序时,我需要检查用户是否经过身份验证。如果没有 - 转到登录页面,如果经过身份验证 - 打开他想要的并从后端返回所需的资源。

我认为我需要在客户端存储身份验证令牌。生成它的最佳方法是什么,或者 Rails 已经为我生成了它?

4

2 回答 2

4

我根本不了解 Angular.JS,但我会尝试为您提供有关可以与任何 Javascript 框架一起使用的 Rails 的一般信息。

对于身份验证,您只需要:

  • 用户模型
  • 处理登录的控制器,此方法检查用户登录名/密码,创建包含所有所需信息的会话对象(会话存储在服务器端,客户端使用 cookie 将每个请求与会话相关联)
  • 用于处理注销的控制器,基本上只会破坏用户的会话

你在这里的rails教程中有一个很好的实现,或者你可以找到几个插件(authlogic似乎是stackoverflow用户的推荐

然后,使用静态 html 页面或使用 AJAX 处理身份验证之间几乎没有区别:

  • HTML 请求将向控制器发送登录名和密码,一旦会话创建,控制器将自动将其重定向到另一个内部页面
  • 在 AJAX 中,客户端的 javascript 应该发送一个 ajax 请求,寻找服务器的答案(成功/失败)并启动适应的操作(如果失败则消息,如果成功则重定向)

在这两种情况下,重要的是检查用户在每个控制器上是否经过身份验证,否则任何人都将被允许启动操作或访问内部信息。

于 2012-08-06T14:02:29.033 回答
1

我正在尝试做类似的事情,我发现这个示例应用程序对让我朝着正确的方向前进非常有用:https ://github.com/karlfreeman/angular-devise

还可以在这里查看关于它的进一步讨论:https ://github.com/karlfreeman/angular-devise/issues/1

这是另一个采用稍微不同方法的存储库:https ://github.com/colindensem/demo-rails-angularjs

我最终借鉴了以上所有的想法。如果有人感兴趣,这是一个工作演示:https ://github.com/jesalg/RADD

于 2013-05-01T04:20:57.357 回答