[Day14] 第十四章-使用JWT token来验证user跟登出api

前言

昨天我们完成了登入
接者今天我们来看看token可以做什麽用吧!
前端跟後端沟通时
我们就像拿者一个身分证(Token)
有了这个token才可以认证使用者身分让你进入服务当中

那当然拿者这个证件才可以离开一些有管制门禁的公司(例如竹科新贵离开刷卡管制)
这个就像我们拿token做登出的机制喔/images/emoticon/emoticon07.gif

目标

  1. JWT Token参数携带
  2. Middleware使用
  3. revoke 登入token
  4. 用JWT查找user资料
  5. 用Token制作登出API

实作

1. 查找user资料

在app/http/controllers/AuthController.php里面

    public function user(Request $request)
    {
        return response($request->user());
    }

这边我们如果有带入JWT token即可回传user物件

接者我们修改routes/web.php里面

Route::middleware(['auth:api'])->group(function () {
    Route::get('user','AuthController@user');
});

// Route::group(['middleware'=>'auth:api'],function(){
//     Route::get('user','AuthController@user');
// });

两种写法都可以喔!!
这边意思是我们在第二个callback function中
可以看到
後面可以条列许多新的路由

middleware => auth:api 中间层可以使用auth里面的来过滤掉是否有携带token
middleware就像是我们的过滤器 或是高速公路的收票站一样

接者来测试一下

这支API就可以透过JWT Token取得该user物件

小提示这边我们要带token先选择 Authorization 再点Bearer Token
再把我们昨天login产生的token的贴上去

2.登出api

在app/http/controllers/authcontroller.php


    public function logout(Request $request)
    {   
        $request->user()->token()->revoke(); 
        return response(['message' => '登出成功'] , 200);
    }

新增这个function

revoke会在资料库里面注记revoke
也就是注销掉这个token效力不会真的删除喔

在routes/web.php

Route::middleware(['auth:api'])->group(function () {
    Route::get('user','AuthController@user');
    Route::delete('logout','AuthController@logout');
});

我们这边可以用http的delete method来做logout
成功画面

我们来用workbench 来看资料库情况吧
https://ithelp.ithome.com.tw/upload/images/20210929/20121052odtBrmx7rO.png

这边我们可以看到登出会注记revoke

总计

今天我们使用了middleware跟介绍了token使用方法
明天再看看要继续做什麽
希望可以在20天内把user这块做完
我们来做商品最後再把永丰订单api接完吧


<<:  原来产品也有自己的生命历程 Product Life Cycle

>>:  Day14:终於要进去新手村了-Javascript-判断式基本结构-switch

Day03 - Visual Studio Code安装Python插件

经过Day02的流程,我们已经可以使用Windows内建的文字编辑器搭配「命令提示字元」进行pyth...

DAY23 - 将作品发布出去吧 - 後端篇 (heroku)

为什麽选择 heroku google 的服务下面有 google cloud 可以部属 api,但...

Vue Components 子元件之间的资料传递

沟通不良的代价就是彼此越来越疏远,然後行同陌路如陌生人。 子元件之间就像兄弟一样的关系,所以这篇要...

Day 24 - Shiaoji.Login踩坑经验及修正

今天原本想开始抓个股的kbar资料及後续处理,结果在清洗Contract资料时,发现抓出来的TSE+...

Day27 Vue CLI 介绍

前面讲了一对现在怎又多了CLI? CLI有事要干嘛的? 在之前我们写Vue时都是用vue.js和&l...