laravel框架dingo+JWT验证tocken

一、Dinggo Api

  1. Dingo Api简介

    Dingo Api 为开发者提供了一整套工具一遍帮助使用者轻松、快捷的构件自己的API。这些工具包括:

  • 内容协商
  • 多认证适配器
  • API版本
  • 频率限制
  • 响应转变和格式化处理
  • 错误及异常处理
  • 内部请求(内部API请求调用)
  • API文档(swagger)

二、jwt认证
1. 简介
在javascript前端技术大行其道的今天,我们通常只需在后台构件 API 提供给前端调用,并且后端仅仅涉及为给前端移动 App 调用。用户认证是 Web 应用的重要组成部分,基于 Api 的用户认证有两个最佳解决方案 – OAuth2.0 (微信授权登录) 和 JWT (JSON WEB TOKEN)

JWT (JSON WEB TOKEN)是一个非常轻巧的规范。这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息
三、安装Dingo 与 jwt

  1. 在composer.json文件下的 require 分块下加入如下:
"dingo/api": "^2.0",
"tymon/jwt-auth": "1.0.*@dev"

2.执行命令加载组件

composer update

注意:若 composer update 时无法应,查看 php.ini 配置文件中 php_openssl 是否已经开启
3.在config/app.php下面注册服务提供者及门面(注意jwt跟dingo并不是一定要一起安装)

'providers' => [
    Dingo\Api\Provider\LaravelServiceProvider::class,
    Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
]
'aliases' => [
    'JWTAuth' =>Tymon\JWTAuth\Facades\JWTAuth::class,
    'JWTFactory'=>\Tymon\JWTAuth\Facades\JWTFactory::class,
    'APIRoute'=>Dingo\Api\Facade\Route::class,
    'API'=>\Dingo\Api\Facade\API::class
]

4.生成相应配置文件

// 生成 dingo 的配置文件
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"

// 生成 jwt 的配置文件
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

//生成所有的服务提供者的配置文件
php artisan vendor:publish  

在这里插入图片描述
5.生成key - 因为jwt-auth需要这个key值

php artisan jwt:secret

6.配置dingo+JWT-auth

API_STANDARDS_TREE=vnd // 环境
API_PREFIX=api // 前缀
API_VERSION=v1 // 版本
API_DEBUG=true // 调试模式
(配置前四个就好)
API_SUBTYPE=myapp // 子类型
API_DOMAIN=api.myapp.com // 子域名
API_NAME=MY API // 名字(使用API Blueprint命令才会用到)
API_CONDITIONAL_REQUEST=false // 带条件的请求
API_STRICT=false // Strict模式
API_DEFAULT_FORMAT=json // 相应格式

7.dingo 与 jwt 相关联的设置
(1)JWT配置项说明:

tl:token有效期(分钟)refresh_ttl:刷新token时间(分钟) 
algo:token签名算法 user:指向User模型的命名空间路径 
identifier:用于从token的sub中获取用户 
require_claims:必须出现在token的payload中的选项,否则会抛出TokenInvalidException异常 
blacklist_enabled:如果该选项被设置为false,那么我们将不能废止token,即使我们刷新了token,前一个token仍然有效 
providers:完成各种任务的具体实现,如果需要的话你可以重写他们 
User —— providers.user:基于sub获取用户的实现 
JWT —— providers.jwt:加密/解密token 
Authentication —— providers.auth:通过证书/ID获取认证用户 
Storage —— providers.storage:存储token直到它们失效

(2)dingo(api开发) 与 jwt(认证、鉴权) 相关联
Dingo 只是构建 api 的工具,但如果需要授权,要是需要用到 jwt 组件,
修改config/api.php 的 auth 如下:

'auth' => [
    'jwt' => function($app){
        return new Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth']);
    }
],

(3)路由的使用 - 注册门面
在这里插入图片描述

//这里是Dingo自己的路由与laravel路由不冲突
// 从容器当中解析dingo路由
$api = app('Dingo\Api\Routing\Router');

// 使用门面注册路由
APIRoute::version('v1',function($api){
    $api->group(['namespace'=>'App\Api\Controllers'],function($api){
        $api->resource('/index','AgentFansController');
    });
});

// 执行命令查看已经存在哪些路由
php artisan api:routes

注意:若执行 php artisan api:routes 命令出现如下提示:
在这里插入图片描述
解决方法:执行命令 composer require dingo/api 更新 Dingo 版本在次执行"php artisan api:routes" 命令即可
四、验证权限

1.为路由群组分配中间件
在这里插入图片描述
使用jwt-auth中间件验证Token令牌
在这里插入图片描述
2.实现用户注册,通过用户注册返回一个Token
php artisan make:controller App\Api\Controllers\AuthController

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值