Angularjs和php作为后端

时间:2013-07-12 01:11:01

标签: angularjs laravel crud

我创建了一个angularjs应用程序,它使用php处理数据库查询并强制执行身份验证模式。

当用户登录到应用程序时,他会在php和php中将用户数据提取到会话中。然后angularjs向php页面发出http post请求以读取所获取的数据。 之后,每当用户请求数据时,角度就会向php页面发布帖子。

我正在考虑使用框架以更好的方式进行身份验证和数据库查询。我的安全知识很原始,我担心我的代码会出错。

经过研究后,我发现laravel看起来既简单又容易。 现在我的问题是:

  1. 像laravel这样的php框架可以为我做这些事吗?
  2. 我可以使用其他东西让人们进行身份验证并确保他们正在执行他们有权执行的CRUD操作吗?
  3. 我正在搜索的关键字是什么,是路由,它是php restful吗?我要求进一步研究此事。
  4. SPA是否可以使用其他方式处理CRUD操作并使用php以“安全”方式进行身份验证?
  5. 我知道上述问题本身并不是编程问题,但我不知道在哪里问(因为我觉得我无法传达我想要了解的内容/ *这就是为什么关键字在上面提出的问题)。

    谢谢

1 个答案:

答案 0 :(得分:4)

基于URL(客户端或服务器端)基本上有两种相关的“路由”。 AngularJS有$ routeProvider你可以配置,所以当位置改变时(由$ location处理),正在使用的客户端模板和控制器也会改变。在服务器端,您可能有重定向或“路由”,将URL映射到特定的PHP文件(或Java方法),在目的地,它会解析传入的URL以获取额外的信息/参数。

  1. 我对laravel一无所知,但googling laravel和身份验证回来后看起来很有希望: http://bundles.laravel.com/category/authentication 我也知道像Zend框架这样的东西提供了很多类似的选项来插入一些身份验证代码。
  2. 最终,如果您正在编写CRUD操作,则代码中的某些内容将不得不处理基于角色的代码执行或数据访问。
  3. RESTful是它自己的事情。在一个非常基本的层面上,RESTful接口使用HTTP“verbs / vocuabulary”,如PUT,POST,DELETE,GET(请求头的一部分,它只是请求中任何正文数据之前的数据)具有特殊含义,如更新虽然如果你做了真正的REST我不确定是否允许使用SESSION来维护身份验证,因为它在这种情况下不是完全无状态的(无论如何只是一个学术论点)。重点是你可以使用REST的其他想法或使用一些“RESTful”的实现,它可以用任何语言编写,或者你可以选择不这样做,无论哪种方式,你仍然有控制资源的问题(函数/方法) / data)您想要控制这个问题与选择RESTful或非RESTful不同(如果您想要通过服务器集群等可扩展性的原因继续使用REST,那么您可以遵循这里的指导{{3} })。另外要注意的是,AngularJS中的$ resource提供了一个高于$ http的抽象,专门用于处理restful服务。

    恕我直言,你应该寻找两件事

    1个php安全/身份验证

    2个php黑客攻击/攻击/漏洞

  4. 您可以使用会话编写自己的身份验证机制,以跟踪已登录的用户。 How do I authenticate user in REST web service?就服务器而言,SPA与传统的网络应用程序没有区别,这些只是客户端代码的差异。
  5. 您打算实施的任何安全措施实际上都与您对该安全性的理解一样好。除非时间是一个非常关键的因素,安全性不是那么多,否则我不会相信别人的互联网插件会为我处理身份验证。有一点你没有提到,但我认为值得研究和必要的任何一个真正安全的是SSL。如果您没有对数据进行加密,则总有可能发生中间人攻击的人(有人在提交到数据库时获得明文用户名和密码)或会话劫持(有人获取活动会话的会话ID然后使用作为原始用户)。基本上我建议你继续研究最佳实践,并亲自查看你计划使用的任何代码,以确保你了解它的工作方式以及它为你提供的安全性。

    我还想提一下,虽然它有点偏离主题语言,但Java Spring在处理身份验证和处理服务和数据访问方面有一些非常好的东西。如果安全性是一个主要问题,我可能会强烈考虑运行Java服务器(不是说Java从未遇到过它的问题,或者说它自动更安全,但是有很多生产代码经受住了时间的考验)。如果需要大规模分发应用程序,可以使用免费的Tomcat J2EE Server或IBM WebSphere。如果有兴趣搜索Java,Spring,Hibernate(ORM),MyBatis,Data Access Objects。这些是所有部分(一些是可选的)我可以想到你需要在Java中组合一个服务层。本页左侧视频的简介: http://php.net/manual/en/features.sessions.php

    SSL也不是银弹,但每一层安全都有帮助。

    凯文米特尼克在他的一本书中说,许多地方都有“硬壳糖果安全”(释义),打破外层意味着你可以获得内心所有的糊状善良。我愿意直接回答这种安全问题。

    根据项目的范围,可能需要让安全专业人员对系统进行渗透测试,以确定是否存在漏洞,以便可以插入漏洞。