首页 » 网站建设 » phptoken签名密钥技巧_laravel55安装jwtauth 生成token令牌的示例

phptoken签名密钥技巧_laravel55安装jwtauth 生成token令牌的示例

duote123 2024-11-20 0

扫一扫用手机浏览

文章目录 [+]

1:首先通过composer进行安装

composerrequiretymon/jwt-auth

phptoken签名密钥技巧_laravel55安装jwtauth 生成token令牌的示例

2:添加做事供应者

phptoken签名密钥技巧_laravel55安装jwtauth 生成token令牌的示例
(图片来自网络侵删)

编辑config/app.php,在"providers"添加:

'Tymon\JWTAuth\Providers\JWTAuthServiceProvider',

3:添加Facades

编辑config/app.php,在"alias"添加:

'JWTAuth'=>'Tymon\JWTAuth\Facades\JWTAuth',

'JWTFactory'=>'Tymon\JWTAuth\Facades\JWTFactory',

4:发布配置文件:

phpartisanvendor:publish--provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

5:天生secretkey

:phpartisanjwt:generate

安装完成后,实行phpartisanjwt:generate,会报错:

(1).MethodTymon\JWTAuth\Commands\JWTGenerateCommand::handle()doesnotexist

办理方法,这个须要修正源码:

编辑vendor/tymon/jwt-auth/src/Commands/JWTGenerateCommand.php,新增:

(2)如果未添加做事供应者,直接实行该命令,可能也会报错!

Therearenocommandsdefinedinthe"jwt"namespace

办理方法:

便是上面的添加做事供应者

配置(Configuration)

secret(secretkey)-秘钥

用来署名token的秘钥。
作者将秘钥与Laravel的APP_KEY分开,以便开拓者可以独立地修正它们。

供应了一个artisan命令,为我们天生一个随机秘钥。
(phpartisanjwt:generate)

ttl(tokentimetolive)-token生存韶光

token的有效韶光,以分钟为单位。
建议尽可能设置短点,尤其是当我们也利用token刷新机制。

refresh_ttl(refreshtimetolive)-refresh生存韶光

可以刷新token的有效韶光,以分钟为单位。
例如,如果设置为2周,那么只能在2周内,刷新对应的token,否则将会抛出TokenExpiredException非常。
如果超过了刷新的有效韶光,必须天生一个全新的token,这意味着用户须要重新登录。

注:ttl和refresh_ttl,用于保持用户的登录状态

algo(hashingalgorithm)-hash算法

用于署名token的算法,保留默认值即可

user(usermodelpath)-用户模型路径

该当指向我们项目的User类的命名空间路径

identifier(useridentifier)-用户标识

从token的主题声明中,根据什么标识来检索用户(一样平常是id)

required_claims(requiredclaims)

这些声明必须存在于token的payload中,否则将抛出TokenInvalidException非常(会检测token的payload是否存在这些声明)

blacklist_enabled(blacklistenabled)

如果设置为false,将无法使token失落效。
虽然我们仍旧可以刷新令牌,但是之前的令牌仍旧有效,因此这样做非常不屈安。
但对付非常大略的实现,可能不须要额外的开销(刷新token等),我们可以配置它。

providers

jwt-auth包已经有一些详细实现,可用来实现各种需求。
只要遵照干系接口,我们就可以覆盖这些详细实现。

providers.user

指定基于主题声明,来查找用户的实现。

providers.jwt

完成token的编码和解码的繁重事情

providers.auth

通过凭据或id来认证用户

providers.storage

用于驱动黑名单,并存储token直到过期。

创建tokens(CreatingTokens)

jwt-auth包为我们供应了创建token的多种方法。
有大略的方法,如果你想更好的掌握,也有更进一步的方法。

开箱即用(outofbox),有许多必须的声明,虽然这些都可以配置:

sub(Subject)-包含token的标识符(默认是用户ID)

iat(IssuedAt)-token发布韶光(unix韶光戳)

exp(Expiry)-token过期日期(unix韶光戳)

nbf(NotBefore)-可以利用token的最早韶光点(unix韶光戳)

iss(Issuer)-token发布者(默认为要求的url)

jti(JWTId)-token的唯一标识符(sub和iat声明的md5值)

aud(Audience)-token的目标受众(默认不须要)

大概可自定义声明。
稍后会先容。

创建一个基于用户凭据的token

创建token的最常用方法是,通过用户的登录凭据,来认证用户。
如果认证成功,则返回一个与该用户干系的token。
例如,假设我们有一个LaravelAuthenticateController

创建一个基于用户工具的token

我们可以跳过用户认证,只通报一个用户工具

上面的2个方法也有第二个参数,可以通报一个'自定义声明'的数组

在解码token时,这些自定义声明,将和其他声明一起供应。

把稳:添加大量的自定义声明,将增加token的大小

创建一个基于任意你喜好的内容的token

作者给我们供应了对底层类和方法的访问,来供应高等的、可自定义的功能。

示例利用了内建的'Tymon\JWTAuth\PayloadFactory'实例(或者利用JWTFactory门面):

也可以在'Tymon\JWTAuth\PayloadFactory'实例上链式调用声明(或者利用JWTFactory门面):

认证(Authentication)

一旦用户利用他们的凭据登录,下一步将利用token发起一个后续要求,来检索用户详情,以便我们可以将其显示为已登录。

利用内置方法,通过http发起认证要求,我们须要设置一个Authorization要求头,如下所示:

Apache用户须要把稳:

Apache彷佛会丢弃Authorization要求头,如果该要求头不是base64编码的user/pass组合。
为理解决此问题,我们可以在apache配置文件中添加一下内容:

或者,我们可以通过在查询字符串中包含token来实现:

为了从要求中获取token,我们可以:

为了获取token的值,我们可以调用:

如果设置了一个token,则会返回token,否则(为方便起见),它将利用上述方法,考试测验从要求中解析token,如果没有设置token或没有token可以被解析,终极返回false。

当然,如果在我们的程序中有其他入口点,我们也可以根据须要手动设置token。
例如:

从token中检索认证过的用户

如果不喜好内联捕获多个非常的方法,我们可以随意利用Laravel添加全局非常处理程序。

在app/Exceptions/Handler.php中,将下面代码添加到render()方法:

中间件和过滤器

如果我们利用的是Laravel5,可以利用内置的2个中间件:

GetUserFromToken

检讨要求头和查询字符串(正如上面阐明过的)是否存在token,并考试测验解码token。
如上所述,同样的事宜被触发。

RefreshToken

此中间件将再次考试测验从要求中解析token,然后将刷新token(从而使旧token失落效),并将其作为下一次相应的一部分返回。
这实际上产生了单个利用token流,如果token被透露,这种办法会减少攻击,由于它仅对单个要求有效。

为了利用这2个中间件,我们须要将它们注册到app/Http/Kernel.php里的$routeMIddleware属性:

以上这篇laravel5.5安装jwt-auth天生token令牌的示例便是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小编。

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读0 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读0 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读0 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读0 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读0 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读0 评论0