iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0
永豐金融APIs

釋放你的潛能用技能交易吧!系列 第 14

[Day14] 第十四章-使用JWT token來驗證user跟登出api

  • 分享至 

  • xImage
  •  

前言

昨天我們完成了登入
接者今天我們來看看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接完吧


上一篇
[Day13] 第十三章-完成登入API (產生jwt token給前端使用)
下一篇
[Day15] 第十五章-建立skill的model跟migration
系列文
釋放你的潛能用技能交易吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言