zoukankan      html  css  js  c++  java
  • laravel 5.5 api接口开发:JWT安装+实现API token 认证

    JWT全称是 JSON Web Token 的缩写,是一个非常轻巧的规范,这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。

    第一步安装:

    /* jwt-auth 是 Laravel 和 lumen 的 JWT 组件,首先来安装一下,Laravel 5.5 的适配版本为 1.0.0-rc.2 */
    
    composer require tymon/jwt-auth:1.0.0-rc.2
    

    第二步配置:

    1、安装完成后,我们需要设置一下 JWT 的 secret,这个 secret 很重要,用于最后的签名,更换这个 secret 会导致之前生成的所有 token 无效。

    php artisan jwt:secret
    

    2、修改 config/auth.php,将 api guard 的 driver 改为 jwt

    4、在config/api.php添加内容

    'auth' => [
        'jwt' => DingoApiAuthProviderJWT::class
    ]

    第三步:测试

    user模型需要继承 TymonJWTAuthContractsJWTSubject 接口,并实现接口的两个方法 getJWTIdentifier () 和 getJWTCustomClaims ()。

    <?php
    
    namespace AppModels;
    
    use TymonJWTAuthContractsJWTSubject;
    use IlluminateNotificationsNotifiable;
    use IlluminateFoundationAuthUser as Authenticatable;
    use Auth;
    use SpatiePermissionTraitsHasRoles;
    
    class User extends Authenticatable implements JWTSubject
    .
    .
    .
        // Rest omitted for brevity
    
        public function getJWTIdentifier()
        {
            return $this->getKey();
        }
    
        public function getJWTCustomClaims()
        {
            return [];
        }
    }  

     

    使用 php artisan tinker 测试生成token:

    1、$user=AppUser::first()
    
    
    2、Auth::guard('api')->fromUser($user)->setTTL(60*24*365) 
    
    可以通过 setTTL(60*24*365) 设置为有效期一年,单位为一分钟,默认有效期为60分钟。
    

      

      

     postman测试:

     编辑:routes/api.php (需要先安装dingoapi,见上篇)

    $api = app('DingoApiRoutingRouter');
    $api->version('v1', [
        'namespace' => 'AppHttpControllersApi'
    ], function($api) {
      
        $api->group(['middleware'=>'api.auth'],function ($api)
        {
            $api->get('user',function()
            {
              /*验证token成功获取用户信息*/
               echo Auth::guard('api')->user();
            });
        });
    });
    

      

  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/fogwang/p/12001893.html
Copyright © 2011-2022 走看看