2012-08-05 57 views
13

进行身份验证的最佳方式是什么?使用与我的前端API Ruby on Rails的Ruby on Rails中的angular.js安全性

Rails应用程序:

在前端我使用Angular.js

的后端。

UPDATE: 这将是单页应用。 前端将在Angular.js中开发,后端在Ruby on Rails中开发。 在理想情况下,我想以json中返回的资源集合的形式构建后端。

我搜索最好的安全实现方法。

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

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

+0

我觉得我得到的哪个方向,你与你的问题标题。我个人也感兴趣。也许你可以稍微改述一下。你可以指定你想解决,而不是要求一般这个问题,什么确切的问题。 – 2012-08-06 01:35:39

回答

4

我根本不知道Angular.JS,但我会尽量为您提供有关可用于任何Javascript框架的rails的一般信息。

对于认证,你只需要:

  • 一种用户模型
  • 其处理登录控制器,这个方法检查用户登录/密码,创建具有所需的所有信息会话对象(会话存储在服务器侧和cookie用于在客户机侧对每个请求的会话)
  • 用于处理注销控制器,其基本上只破坏用户的会话相关联

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

然后,有一个与静态HTML页面或使用AJAX处理认证之间的一些区别:

  • 一个HTML请求将发送登录名和密码控制器,它会自动将其重定向到一旦另一个内部页面会话创建
  • 在AJAX,在客户端的JavaScript应该发送一个Ajax请求,查找服务器(成功/失败)的答案,推出适应行动(消息如果失败,重定向如果成功)

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

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