【问题标题】:Security in angular.js with Ruby on Rails使用 Ruby on Rails 的 angular.js 中的安全性
【发布时间】:2012-08-02 22:28:04
【问题描述】:

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

在前端我使用 Angular.js

在后端:Ruby on Rails

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

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

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

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

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

【问题讨论】:

  • 我想我知道您提出问题的方向。我个人对此也很感兴趣。也许你可以改写一下。您能否具体说明您要解决的具体问题,而不是笼统地问这个问题。

标签: ruby-on-rails security angularjs


【解决方案1】:

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

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

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

你有一个很好的实现in the rails tutorial here,或者你可以找到几个插件(authlogic似乎是stackoverflow用户的推荐here)。

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 2013-01-21
      • 2010-11-26
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多