參考文檔:
https://segmentfault.com/a/1190000013514298
https://segmentfault.com/a/1190000012292902
https://laravelacademy.org/post/7083.html
https://laravel-china.org/docs/laravel/5.6/passport/1380#introduction
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、融安ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的融安網(wǎng)站制作公司
1.composer create-project laravel/laravel QuanDd '5.7.*'
cd QuanDd
git init
git add . && git commit -m "project init"
git remote add origin git@gitee.com:black_hat/QuanDd.git
git push -u origin master
配置
storage 目錄和 bootstrap/cache 賦予讀寫權(quán)限
config/app.php
'timezone' => 'Asia/Shanghai'
'locale' => 'zh_cn'
應(yīng)用密鑰
php artisan key:generate
數(shù)據(jù)庫配置 .env
DB_CONNECTION=MySQL
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=quandd
DB_USERNAME=root
DB_PASSWORD=root
兼容 數(shù)據(jù)庫 utf8mb4
app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Schema;
public function boot(){
Schema::defaultStringLength(191);
}
模型管理
mkdir app/Models
mv app/User.php app/Models/User.php
User.php
namespace App\Models;
批量修改 User 模型的引用 App\User 替換成 App\Models\User
composer require laravel/passport
config/app.php providers 數(shù)組
Laravel\Passport\PassportServiceProvider::class,
php artisan migrate
php artisan passport:install
添加 Laravel\Passport\HasApiTokens trait 到 App\Models\User 模型
在 AuthServiceProvider 的 boot 方法中調(diào)用 Passport::routes()
在配置文件 config/auth.php 中,需要設(shè)置 api 認(rèn)證 guard 的 driver 選項(xiàng)為 passport
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
第一次部署 Passport 到生產(chǎn)服務(wù)器時(shí),可能需要運(yùn)行 php artisan passport:keys
配置:
令牌生命周期
默認(rèn)情況下,Passport 頒發(fā)的訪問令牌(access token)是長期有效的,如果你想要配置更短的令牌生命周期,可以使用 tokensExpireIn 和 refreshTokensExpireIn 方法,這些方法需要在 AuthServiceProvider 的 boot 方法中調(diào)用:
Passport::tokensExpireIn(Carbon::now()->addDays(15));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
使用
。 調(diào)用 json api 創(chuàng)建 一個(gè)認(rèn)證客戶端,生成 ID 和 secrect
。 自定義 申請(qǐng)授權(quán) 路由,在后臺(tái)進(jìn)行訪問認(rèn)證服務(wù)器的認(rèn)證頁面
注冊登錄代碼:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AuthController extends Controller
{
// register inter for users
public function register(Request $request){
if (!$request->has('phone') || !$request->has('passwd') || !$request->has('captcha')) {
return json_encode([
'code' => '4001',
'msg' => '手機(jī)號(hào)|密碼|驗(yàn)證碼不能為空'
]);
}
// 手機(jī)號(hào)驗(yàn)證
if (!preg_match("/^1[345789]\d{9}$/", trim($request->phone))) {
return json_encode([
'code' => '4002',
'msg' => '非法手機(jī)號(hào)'
]);
}
// 密碼驗(yàn)證 6-12 字母數(shù)字下劃線
if (!preg_match("/^[0-9A-Za-z_]{6,12}$/", trim($request->passwd))) {
return json_encode([
'code' => '4003',
'msg' => '密碼為6-12位的數(shù)字字母下劃線'
]);
}
// 驗(yàn)證碼
// todo
// 手機(jī)號(hào)是否已注冊
if (User::hasExists(trim($request->phone))) {
return json_encode([
'code' => '4004',
'msg' => '手機(jī)號(hào)已注冊,請(qǐng)直接登錄'
]);
}
$data = [
'phone' => trim($request->phone),
'password' => bcrypt(trim($request->passwd))
];
if (!$user = User::create($data)) {
return json_encode([
'code' => '5001',
'msg' => '注冊失敗'
]);
}
return json_encode([
'code' => '2000',
'msg' => '注冊并登錄成功',
'data' => [
'phone' => $data['phone'],
'created_at' => $user->created_at->toDateTimeString(),
'token' => $tokenData = $user->createToken('Tbk MiniP')->accessToken
]
]);
}
// user login interface
public function login(Request $request){
if (!$request->has('phone') || !$request->has('passwd')) {
return json_encode([
'code' => '4001',
'msg' => '手機(jī)號(hào)|密碼不能為空'
]);
}
if (!preg_match("/^1[345789]\d{9}$/", trim($request->phone))) {
return json_encode([
'code' => '4002',
'msg' => '非法手機(jī)號(hào)'
]);
}
if (!Auth::attempt(['phone' => trim($request->phone), 'password' => trim($request->passwd)])) {
return json_decode([
'code' => '4003',
'msg' => '登錄失敗,用戶名或密碼錯(cuò)誤'
]);
}
$user = Auth::user();
return json_encode([
'code' => '2000',
'msg' => '登錄成功',
'token' => $user->createToken('Tbk MiniP')->accessToken,
'data' => $user->toArray()
]);
}
// test
public function test(Request $request){
var_dump($request->header());die;
$user = Auth::user();
var_dump($user->toArray());
}
}
常用方法:
createToken()
deleteToken()
tokenExists()
分享標(biāo)題:laravel+passport搭建api認(rèn)證系統(tǒng)(一)基礎(chǔ)應(yīng)用
文章鏈接:http://muchs.cn/article14/jcpsde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站建設(shè)、面包屑導(dǎo)航、、微信小程序、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)