JWT 之dingo/api

2024-06-12 15:58
文章标签 api jwt dingo

本文主要是介绍JWT 之dingo/api,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JWT (json web token)


dingo/api 以经内置了jwt

基本术语

  • header (头部)

    申明加密算法,JWT最后是通过base64编码
    
  • payload (载荷)

    过期时间,用户数据
    JWT 最后是通过 Base64 编码,可被翻译回原来的样子
    
  • signature (签名)

    由服务器进行的签名,保证了 token 不被篡改。```{"typ":"JWT","alg":"HS256"}{"iss":"http://larbbs.test","iat":1515733500,"exp":1515737100,"nbf":1515733500,"jti":"c3U4VevxG2ZA1qhT","sub":1,"prv":"23bd5c8949f600adb39e701c400872db7a5976f7"}signature
    ```
    

    在dingo中使用jwt

    • auth.php api配置jwt驱动
    • dingo api配置auth项,指向Dingo\Api\Auth\Provider\JWT
    • 安装tymon/jwt-auth

    jwt载荷术语

    • Tymon\JWTAuth\Providers\JWTAuthServiceProvide
    • Tymon\JWTAuth\PayloadFactory JWTFactory 门面
    • 配置

          Secret Key - secretToken time to live - ttlRefresh time to live - refresh_ttlHashing algorithm - algoUser model path - userUser identifier - identifierRequired claims - required_claimsBlacklist enabled - blacklist_enabledProvidersUser - providers.userJWT - providers.jwtAuthentication - providers.authStorage - providers.storage

      payload 说明

      • sub
        Subject 保存token的标识,默认值为user的id
      • iat
        Issued At token发行的unix时间戳
      • exp
        Expiry 过期时间
      • nbf
        Not Before 最早可被使用的token时间点
      • iss
        Issuer 默认请求的url地址
      • jti
        JWT id token的唯一标识,通常由发行时间与sub MD5求值所得
        -aud
        Audience 接收者参数非必选项

    生成token

        // 用户证书(凭证)$credentials = $request->only('email', 'password');$token = JWTAuth::attempt($credentials)// 用户对象$user = User::first();$token = JWTAuth::fromUser($user);// 自定义第二个参数,该参数在解码token时会用到$customClaims = ['foo' => 'bar', 'baz' => 'bob'];JWTAuth::attempt($credentials, $customClaims);// orJWTAuth::fromUser($user, $customClaims);// 自定义token$customClaims = ['foo' => 'bar', 'baz' => 'bob'];$payload = JWTFactory::make($customClaims);$token = JWTAuth::encode($payload);// 支持链式调用$payload = JWTFactory::sub(123)->aud('foo')->foo(['bar' => 'baz'])->make();$token = JWTAuth::encode($payload);
    

    认证(验证)authentication

  • header头内传递token

        ```AuthorizationAuthorization: Bearer {yourtokenhere}```*warning  对于apache而言非base64编码内容会被丢弃,修复如下*```fixRewriteEngine OnRewriteCond %{HTTP:Authorization} ^(.*)RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]```
    2.
    
  • 查询字符串传递

        ```http://api.mysite.com/me?token={yourtokenhere}// 从请求中解析tokenJWTAuth::setToken('foo.bar.baz');$token = JWTAuth::getToken();$user = JWTAuth::parseToken()->authenticate(); ```
    3. 
    
  • 事件

        ```// fired when the token could not be found in the requestEvent::listen('tymon.jwt.absent');// fired when the token has expiredEvent::listen('tymon.jwt.expired');// fired when the token is found to be invalidEvent::listen('tymon.jwt.invalid');// fired if the user could not be found (shouldn't really happen)Event::listen('tymon.jwt.user_not_found');// fired when the token is valid (User is passed along with event)Event::listen('tymon.jwt.valid');```
    
  • 中间件

        - GetUserFromToken  检查header和query字符串,解码,同样事件会被触发- RefreshToken使旧的token无效,并返回下一次响应,仅对当一请求有效- 注册```protected $routeMiddleware = ['jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken','jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',];```
    

这篇关于JWT 之dingo/api的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054666

相关文章

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

WordPress开发中常用的工具或api文档

http://php.net/ http://httpd.apache.org/ https://wordpress.org/ https://cn.wordpress.org/ https://core.svn.wordpress.org/ zh-cn:开发者文档: https://codex.wordpress.org/zh-cn:%E5%BC%80%E5%8F%91%E8%80%

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止

Docker远程连接和Docker Remote Api

在Docker生态系统中一共有3种API:Registry API、Docker Hub API、Docker Remote API 这三种API都是RESTful风格的。这里Remote API是通过程序与Docker进行集成和交互的核心内容。 Docker Remote API是由Docker守护进程提供的。默认情况下,Docker守护进程会绑定到一个所在宿主机的套接字:unix:///v

基于MinerU的PDF解析API

基于MinerU的PDF解析API - MinerU的GPU镜像构建- 基于FastAPI的PDF解析接口 支持一键启动,已经打包到镜像中,自带模型权重,支持GPU推理加速,GPU速度相比CPU每页解析要快几十倍不等 主要功能 删除页眉、页脚、脚注、页码等元素,保持语义连贯对多栏输出符合人类阅读顺序的文本保留原文档的结构,包括标题、段落、列表等提取图像、图片标题、表格、表格标题自动识别

mongodb基本命令和Java操作API示例

1.Mongo3.2 java API示例:http://www.cnblogs.com/zhangchaoyang/articles/5146508.html 2.MongoDB基本命:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 3.java MongoDB查询(一)简单查询: http://www.cnblogs