AngularJS + Laravel 5 身份验证

Posted

技术标签:

【中文标题】AngularJS + Laravel 5 身份验证【英文标题】:AngularJS + Laravel 5 Authentication 【发布时间】:2015-04-25 00:02:58 【问题描述】:

在使用 angularJS 构建我的 SPA 时,我想在我的 angularJS 网站中实现用户身份验证。但是,我不知道从哪里开始以及最佳实践是什么。

基本上,我确信可以担任一个或多个角色。我找了一些例子,以便对如何正确处理这个问题有一个基本的了解,但到目前为止,我只遇到过非常简单或不太安全的例子(比如this)。

所以我的问题是,如何使用 REST(或自定义 API url)实现身份验证服务来对用户进行身份验证,然后使用 angularJS 在页面上显示用户信息,同时还通过使用(对于例如)来自 Laravel 的 csrf 令牌?

提前致谢, 尼克·范德梅杰

【问题讨论】:

【参考方案1】:

我正在为后端制作一个 AngularJS 应用程序和一个使用 Laravel 5 制作的 API RESTful,我的身份验证方法是:

    已安装jwt-auth。基本上扩展了 Laravel 的 Auth 模型,使用令牌添加授权。 向 laravel 添加了简单的角色包。我用permiso。具有多个角色/用户和权限/角色。非常简单。 将 jStorage 添加到前端。 (您可以改用 AngularJS 模块)。

所以步骤是:

    前端发送用户凭据(电子邮件和通行证)。 服务器检查,jwt-auth 向该用户生成令牌并将其发回。 前端将令牌保存在浏览器存储中(这种方法不需要 csrf)。 接下来对 API 的所有调用都使用 Authorization: Bearer 标头(或使用 ?token=...

【讨论】:

我想实现同样的格式,但是我已经通过 Entrust 包实现了用户角色和权限。 @neoroger 是否可以在运行所有用户和角色权限的情况下使用 Entrust 实施 jwt-auth?任何帮助深表感谢?提前谢谢。【参考方案2】:

我喜欢 @neoroger 使用带有 jwt-auth 的 JSON Web 令牌所采用的相同方法。我使用 Satellizer 包将令牌存储在前端,然后将其与每个请求一起发送到 API。

如果您有兴趣,我整理了一些教程来展示如何实现这两个包:

https://scotch.io/tutorials/token-based-authentication-for-angularjs-and-laravel-apps

http://ryanchenkie.com/token-based-authentication-for-angularjs-and-laravel-apps/

【讨论】:

我刚读完你的两篇文章,它教会了我很多。喜欢关于如何在 Laravel 之间使用 JWT 和使用 Satellizer for Angular 的方法和解释。谢谢。 太棒了!很高兴能提供帮助。 :) 我确实有一个关于如何使用jwt.auth 中间件来限制对所有控制器的访问的问题。我已将其添加到那篇文章的 cmets 中。今天我正在玩教程演示,通过它我学到了很多关于 laravel 和 jwt 身份验证的知识。到目前为止我读过的最好的教程 - 毫无疑问! 感谢@blackops_programmer! 我正在使用本教程,但我无法登录。

以上是关于AngularJS + Laravel 5 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1/AngularJS:在 Angular 视图中重置密码(如何验证 CSRF 令牌?)

使用 Satellizer 和 Laravel 的 AngularJS 身份验证服务

Laravel 5.2 需要一个实现默认身份验证驱动程序/“Multi-Auth”的示例。现在需要很多工作,因为[重复]

使用 Laravel、JWT 和 Angularjs 批处理令牌

Laravel + React,使用 Laravel 身份验证的 api

如何使用 Laravel 5 设置 JWT-Auth