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();
            });
        });
    });
    

      

  • 相关阅读:
    招聘.Net中高级软件研发工程师
    布局和救火
    UITableView详解(转)
    iOS开发那些事--性能优化–内存泄露问题的解决(转)
    LeeCode(PHP) 2.add-two-numbers
    LeeCode(PHP) 1.Two Sum
    PHP实现 序列帧拆分
    PHPExcel导出大量数据超时及内存错误解决方法(转)
    laravel路由 实现短连接生成及跳转(php 301重定向)
    从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续(面试题)
  • 原文地址:https://www.cnblogs.com/fogwang/p/12001893.html
Copyright © 2011-2022 走看看