婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解Laravel5.6 Passport實現Api接口認證

詳解Laravel5.6 Passport實現Api接口認證

熱門標簽:桂陽公司如何做地圖標注 太原400電話申請流程 合肥企業外呼系統線路 神龍斗士電話機器人 企業400電話辦理多少費用 代理打電話機器人 宿州正規外呼系統軟件 電信外呼系統多少錢一個月 萍鄉商鋪地圖標注

很多企業做項目使用前后端分離,后端提供接口地址,前端使用接口地址拿數據,并渲染頁面。那么,前端用戶登錄如何使用接口進行認證?網上各種教程寫的不堪入目,完全看不懂,所以我根據自己的理解,寫下此篇文章,希望能幫助到大家。

后端(Laravel5.6框架)

1、使用 composer 安裝 Passport ,打開終端,執行命令:

composer require laravel/passport  
#安裝完成后,在composer.json文件中會看到文件版本信息

2、接下來,將 Passport 的服務提供者注冊到配置文件 config/app.phpproviders 數組中

Laravel\Passport\PassportServiceProvider::class,

3、執行數據庫遷移

php artisan migrate #數據庫中會生成接口認證所需的5張表

4、創建密碼授權客戶端

php artisan passport:client --password
#創建了client_id和client_secret,前端登錄驗證的時候必須把這兩個玩意兒帶著

5、獲取keys

php artisan passport:keys

6、配置路由

打開服務提供者 AuthServiceProvider , 在 boot 方法中加入如下代碼:

use Laravel\Passport\Passport;
public function boot() { 
  $this->registerPolicies(); 
  Passport::routes(); //接口認證的路由
}

然后將配置文件 config/auth.php 中授權看守器 guardsapidriver 選項改為 passport

我這里的 customer 表是前端用戶表,但是 laravel 默認的是 user 表,所以這里需要做如下配置:

'guards' => [
  'web' => [
    'driver' => 'session',
    'provider' => 'users',
  ],

  'api' => [
    'driver' => 'passport',
    'provider' => 'customers',
  ],
],
'providers' => [
  'users' => [
    'driver' => 'eloquent',
    'model' => App\User::class,
  ],
  'customers' => [
    'driver' => 'eloquent',
    'model' => App\Models\Shop\Customer::class,
  ],
],

7、注冊中間件,在 app/Http/Kernel.php 文件中的 $routeMiddleware 數組中添加如下中間件

protected $routeMiddleware = [
'client.credentials'=>\Laravel\Passport\Http\Middleware\CheckClientCredentials::class,
];

然后在需要認證接口路由文件 routes/api.php 前面加上這個中間件。

Route::group(['prefix' => 'cart', 'middleware' => ['client.credentials']], function () {
  ...
});

8、前端用戶表 customer 模型里面做如下配置:

use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;

class Customer extends Authenticatable
{
  use HasApiTokens;
   ....  
}

至此,后端的所有配置已完成。

接下來,打開接口測試工具(postman),輸入接口地址: wechat.test/oauth/token ,請求類型 POST ,填上如下參數,點擊 send 你會看到后臺返回了前端所需的 access_token

 

前端(vue.js)

首先去加載用戶登錄組件,即用戶登錄頁面。

1. 配置路由,在 index.js 文件中寫入如下代碼

import Login from '@/components/customer/Login'
export default new Router({
 routes: [
    ....
  {
   path: '/customer/login',
   name: 'Login',
   component: Login
  },
 ]
})

2、加載組件,在 customer 文件夾的 Login.vue 文件中寫入如下代碼:

template>
 div>
  input type="email" v-model="customer.email" placeholder="請輸入郵箱">
  input type="password" v-model="customer.password" placeholder="請輸入密碼">
  button @click.prevent="submit">登 錄/button>
 /div>
/template>

script>
 export default {
  data() {
   return {
    customer: {
     email: '',
     password: ''
    }
   }
  },
  methods: {
   submit() {
    //將數據配置好
    const data = {
     grant_type: 'password', //oauth的模式
     client_id: 1,  //上面所說的client_id
     client_secret: 'CO331cA1mqiKgGvvgiDzPxh4CUu19vSEiqxM7LHD',//同上
     username: this.customer.email,
     password: this.customer.password,
    }
    this.axios.post('/oauth/token', data)
     .then(res => {
      if (res.status == 200) { //如果成功了,就把access_token存入localStorage
       localStorage.token_type = res.data.token_type
       localStorage.access_token = res.data.access_token
       this.$router.push({name:'Index'})
      }
     })
   }
  }
 }
/script>

客戶端查看 localStorage ,如圖:

3、在 http.js 文件中設置攔截器,用于判斷用戶是否登錄,若沒有登錄跳轉到登錄頁面。代碼如下:

//#創建http.js文件
import axios from 'axios'
import router from '@/router'

// axios 配置
axios.defaults.timeout = 5000;
axios.defaults.baseURL = 'http://wechat.test/';


// http request 攔截器
axios.interceptors.request.use(
 config => { //將所有的axios的header里加上token_type和access_token
  config.headers.Authorization = `${localStorage.token_type} ${localStorage.access_token}`;
  return config;
 },
 err => {
  return Promise.reject(err);
 });

// http response 攔截器
axios.interceptors.response.use(
 response => {
  return response;
 },
 error => {
  // 401 清除token信息并跳轉到登錄頁面
  if (error.response.status == 401) {
   alert('您還沒有登錄,請先登錄')
   router.replace({  //如果失敗,跳轉到登錄頁面
    name: 'Login'
   })
  }
  return Promise.reject(error.response.data)
 });

export default axios;

重新訪問項目,在商品詳情頁面點擊加入購物車,你會發覺奇跡已經出現,當你沒有登錄時,提示跳轉到登錄頁面。輸入賬號密碼,登錄成功,此時就能拿到用戶id。接下來,繼續測試。

4、去 Cart 控制器中,找到購物車首頁方法,獲取用戶的id,獲取方式如下:

$customer_id = auth('api')->user()->id;
return $customer_id;

5、在 postman 中輸入購物車首頁接口地址,并傳入所需參數,參數參考地址: http://laravelacademy.org/post/8909.html ,如圖:

拿到用戶id后,把后端之前定義的customer_id全部改為通過接口方法獲取。至此, Passport 接口認證的全部操作已完成。

總結:接口認證邏輯思想

1、安裝passport后,生成client_id和 client_secret

2、使用username、password、client_id、client_secret、grant_type參數,調用/oauth/token接口,拿到access_token

3、需要認證的接口,加上中間件。這時候直接訪問接口地址,會提示沒有認證的。帶上access_token后,才能拿到接口的數據。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • laravel框架 api自定義全局異常處理方法
  • 基于laravel制作APP接口(API)
  • 基于Laravel Auth自定義接口API用戶認證的實現方法
  • 詳解laravel安裝使用Passport(Api認證)
  • laravel dingo API返回自定義錯誤信息的實例
  • 在 Laravel 中動態隱藏 API 字段的方法
  • Laravel如何實現適合Api的異常處理響應格式

標簽:綏化 白銀 辛集 鄂州 太原 崇左 廊坊 衡陽

巨人網絡通訊聲明:本文標題《詳解Laravel5.6 Passport實現Api接口認證》,本文關鍵詞  詳解,Laravel5.6,Passport,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Laravel5.6 Passport實現Api接口認證》相關的同類信息!
  • 本頁收集關于詳解Laravel5.6 Passport實現Api接口認證的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产亚洲精品资源在线26u| 午夜精品福利视频网站| 一级中文字幕一区二区| 麻豆91在线播放| 色中色一区二区| 国产欧美日韩另类视频免费观看| 亚洲电影视频在线| 91色视频在线| 中文字幕欧美国产| 黑人巨大精品欧美一区| 欧美日本一道本在线视频| 综合欧美亚洲日本| 成人午夜在线免费| 国产亚洲美州欧州综合国 | 欧美老人xxxx18| 亚洲天堂网中文字| 懂色av一区二区三区免费观看| 日韩欧美一二三四区| 亚洲国产精品人人做人人爽| 99久久国产综合精品女不卡| 精品粉嫩超白一线天av| 蜜臀91精品一区二区三区| 欧美精品自拍偷拍动漫精品| 亚洲综合视频在线| 欧美午夜一区二区三区| 一区二区三区av电影| 色综合天天综合色综合av| 中文字幕中文字幕在线一区| 成人av片在线观看| 自拍偷拍亚洲激情| 91在线观看成人| 一色桃子久久精品亚洲| 欧美精品一卡二卡| 五月婷婷综合网| 欧美一区二区久久久| 美国欧美日韩国产在线播放| 91精品国模一区二区三区| 日本美女一区二区三区视频| 欧美一区二区在线免费观看| 久久99久久99精品免视看婷婷| 欧美成人女星排名| 国产精品一区三区| 自拍偷拍亚洲激情| 欧美日韩国产电影| 久久精品99国产精品| 久久亚洲综合av| 成人白浆超碰人人人人| 亚洲欧美日韩一区二区| 91超碰这里只有精品国产| 久久99精品久久久| 1024亚洲合集| 91精品久久久久久久久99蜜臂| 免费在线观看视频一区| 日本一区二区三区电影| 色婷婷精品久久二区二区蜜臀av| 亚洲国产成人va在线观看天堂| 欧美变态口味重另类| 成人高清视频在线| 三级久久三级久久久| 国产亚洲精久久久久久| 91在线观看免费视频| 免费高清在线一区| √…a在线天堂一区| 日韩视频一区在线观看| 成人av在线一区二区三区| 亚洲午夜在线电影| 欧美精品一区视频| 在线视频综合导航| 国产一区二区三区香蕉| 亚洲一二三区不卡| 国产色91在线| 9191国产精品| 91蝌蚪porny九色| 精品一二线国产| 亚洲永久免费av| 国产日韩精品一区二区浪潮av| 欧美私人免费视频| 国产91精品一区二区麻豆网站 | 成人高清在线视频| 蜜桃av一区二区在线观看| 一区二区中文字幕在线| 久久美女艺术照精彩视频福利播放| 91精品福利视频| 成人夜色视频网站在线观看| 麻豆精品国产传媒mv男同 | 亚洲婷婷国产精品电影人久久| 欧美一级高清大全免费观看| 本田岬高潮一区二区三区| 精品一区二区免费在线观看| 五月天视频一区| 亚洲一区二区三区四区五区黄 | 精品国产乱码久久久久久夜甘婷婷 | 亚洲欧美综合色| 2021中文字幕一区亚洲| 欧美日韩成人一区| 精品视频色一区| 欧美在线999| 99re热视频精品| 91蜜桃传媒精品久久久一区二区| 国产经典欧美精品| 极品少妇一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 天天av天天翘天天综合网| 一区二区三区欧美久久| 亚洲伦理在线免费看| 亚洲欧美色一区| 一区二区三区久久久| 一二三区精品福利视频| 一区二区三区四区在线免费观看| 综合激情成人伊人| 一区二区三区不卡在线观看 | 91污在线观看| 色综合咪咪久久| 欧美亚洲综合一区| 欧美日韩精品欧美日韩精品| 欧美一a一片一级一片| 欧美日韩成人综合| 欧美成人在线直播| 久久欧美一区二区| 国产精品女同一区二区三区| 国产三级精品三级| 亚洲天堂精品视频| 亚洲成人www| 午夜久久久久久电影| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩电影在线免费观看| 极品尤物av久久免费看| 成人午夜激情影院| 91国偷自产一区二区开放时间 | 99九九99九九九视频精品| 97se亚洲国产综合自在线不卡| 一本到高清视频免费精品| 欧美日韩综合不卡| 欧美r级在线观看| 中文字幕中文在线不卡住| 亚洲黄色性网站| 免费高清视频精品| www.成人在线| 日韩一区二区三区在线| 国产人成一区二区三区影院| 亚洲色图在线视频| 老司机一区二区| 97se狠狠狠综合亚洲狠狠| 一二三四社区欧美黄| 日韩高清电影一区| 成人精品视频一区二区三区尤物| 在线观看av一区二区| 欧美精品一区二区三区一线天视频| 国产精品无圣光一区二区| 午夜精品在线看| 成人福利在线看| 日韩欧美国产小视频| 日韩毛片精品高清免费| 日本视频一区二区三区| av午夜精品一区二区三区| 91精品国产福利在线观看| 日韩理论片中文av| 国内成人自拍视频| 欧美日韩视频在线第一区| 国产欧美日韩精品一区| 麻豆成人av在线| 欧洲精品中文字幕| 国产精品福利一区| 国产一区免费电影| 91精品国产综合久久香蕉麻豆 | 3d动漫精品啪啪1区2区免费| 中文字幕巨乱亚洲| 久久国产视频网| 欧美日韩在线直播| 一区二区国产视频| 91尤物视频在线观看| 久久久国产精品麻豆 | 中文字幕字幕中文在线中不卡视频| 久久se精品一区二区| 欧美性色黄大片手机版| 日韩伦理免费电影| 波多野结衣一区二区三区| 日韩欧美国产一区二区三区| 午夜精品一区二区三区三上悠亚| 91麻豆国产香蕉久久精品| 欧美高清在线精品一区| 韩国视频一区二区| 亚洲精品一区二区三区精华液| 香蕉成人啪国产精品视频综合网| 色哟哟一区二区| 综合在线观看色| 91麻豆成人久久精品二区三区| 国产精品乱码人人做人人爱| 国产麻豆精品一区二区| 久久天堂av综合合色蜜桃网| 黄一区二区三区| 欧美成人伊人久久综合网| 毛片av中文字幕一区二区| 精品日产卡一卡二卡麻豆| 久久超级碰视频| 亚洲精品一区二区三区在线观看| 美腿丝袜亚洲综合| 精品国产成人在线影院| 国产主播一区二区| 国产日产欧美一区二区三区|