带有 PHP 和 Angular.js 的 JWT(JSON Web 令牌)

Posted

技术标签:

【中文标题】带有 PHP 和 Angular.js 的 JWT(JSON Web 令牌)【英文标题】:JWT (JSON Web Token) with PHP and Angular.js 【发布时间】:2014-11-27 20:41:42 【问题描述】:

我有一个 Angular.js 应用程序,我正在尝试使用 JWT 对我的 php 后端实施身份验证。

我有应用程序设置以在登录时设置令牌并在每个请求退出时发送令牌。我关注的是这里的信息,虽然它是针对 Node.js 而不是 PHP:https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/。

那里的信息非常有用,但我不明白为什么令牌应该在 Authorization 标头中,并且在令牌之前带有文本“Bearer”。我可以在没有'Bearer'的情况下将令牌放在那里吗?对于令牌在请求中的位置是否有推荐的方法?

我的另一个问题是在前端存储令牌的位置。该网站建议使用 $window.sessionStorage ,这似乎不适用于我的情况,因为它似乎可以防止某人使用不是很直观的多个选项卡。

我的问题真的归结为:

我应该将令牌放在请求标头的什么位置? 前端应该如何存储令牌?

【问题讨论】:

JWT for PHP 的文档不好。 【参考方案1】:

RFC6750 - section Authorization Request Header Field推荐使用Bearer关键字:

客户端应该使用不记名令牌发出经过身份验证的请求 带有“承载”HTTP 的“授权”请求标头字段 授权方案。资源服务器必须支持此方法

我一直在使用的库总是在令牌本身之前需要它。所以请求头应该如下:

Authorization: Bearer your_token

关于存储我也在$window.sessionStorage看到过

【讨论】:

以上是关于带有 PHP 和 Angular.js 的 JWT(JSON Web 令牌)的主要内容,如果未能解决你的问题,请参考以下文章

用户无法使用 JWT 和 Node API 登录 Angular js

带有 Angular JS 的 mySQL 数据库的用户登录系统?

讨论:本地存储中 Passport-local JWT Token 的关注

在 Express.js 中刷新 JWT

带有 Firebase JWT 的 PHP Slim

带有(ES6)类和继承的Angular.js DI