摘要:最近項目做認證,最終技術選型決定使用,項目框架使用的是,使用有比較方便使用的開源包。使用安裝,使用的框架版本為,最新穩定版本為。
最近項目做API認證,最終技術選型決定使用JWT,項目框架使用的是laravel,laravel使用JWT有比較方便使用的開源包:jwt-auth。 使用composer安裝jwt-auth,laravel使用的框架版本為5.0,jwt-auth最新穩定版本為0.5.12。(最新版為1.0.*,需laravel5.4以上)
composer require tymon/jwt-auth 0.5.*
安裝完成后,需要在config/app.php中注冊相應的服務提供者:
"providers" => [ "TymonJWTAuthProvidersJWTAuthServiceProvider", ],
然后注冊需要用到的對應門面:
"aliases" => [ "JWTAuth" => "TymonJWTAuthFacadesJWTAuth", "JWTFactory" => "TymonJWTAuthFacadesJWTFactory", ],
然后發布相應配置文件:此命令會在 config 目錄下生成一個 jwt.php 配置文件,你可以在此進行自定義配置。
php artisan vendor:publish --provider="TymonJWTAuthProvidersJWTAuthServiceProvider"
最后生成密鑰:此命令會在你的 .env 文件中新增一行 JWT_SECRET=secret
php artisan jwt:generate
生成TOKEN,生成TOKEN有多種方式:下面介紹兩種
一、根據模型為基礎生成TOKEN:
根據模型生成TOKEN需在config/auth.php指定使用哪個模型。
"model" => "AppModelsMembers",
在模型文件Members.php中需添加
namespace AppModels; use IlluminateDatabaseEloquentModel; use IlluminateAuthAuthenticatable; use IlluminateContractsAuthAuthenticatable as AuthenticatableContract; class Members extends Model implements AuthenticatableContract { use Authenticatable; ... }
根據模型生成TOKEN
$member = AppModelsMembers::where("id",7)->select("id","username")->first(); $token = JWTAuth::fromUser($member); echo $token;exit;
二、自定義生成TOKEN:
$customClaims = ["sub" => [ "id" => "7", "name" => "kocor", ]]; $payload = JWTFactory::make($customClaims); $token = JWTAuth::encode($payload); echo $token;exit;
解密提取TOKEN信息
提取TOKEN信息
$user_info = JWTAuth::parseToken()->authenticate()
刷新TOKEN
$newToken = JWTAuth::refresh($_REQUEST["token"]);
使用實例
use TymonJWTAuthExceptionsJWTException; use TymonJWTAuthExceptionsTokenExpiredException; use TymonJWTAuthExceptionsTokenInvalidException; //JWT提取會員信息 try { if (! $user_info = JWTAuth::parseToken()->authenticate()) { return Api::arr(config("statusCode.jwt_user_not_found"), trans("message.jwt_user_not_found").":404"); } //在token有效期內允許刷新 $newToken = JWTAuth::refresh($_REQUEST["token"]); return Api::json(config("statusCode.success"), trans("message.success"),$newToken); } catch (TokenExpiredException $e) { try { //在刷新有效期內 $newToken = JWTAuth::refresh($_REQUEST["token"]); return Api::json(config("statusCode.success"), trans("message.success"),$newToken); } catch (JWTException $e) { // 過期用戶 return Api::json(config("statusCode.jwt_token_expired"), trans("message.jwt_token_expired").$e->getStatusCode()); } //無效的token } catch (TokenInvalidException $e) { return Api::json(config("statusCode.jwt_token_invalid"), trans("message.jwt_token_invalid").$e->getStatusCode()); //token不存在 } catch (JWTException $e) { return Api::json(config("statusCode.jwt_token_absent"), trans("message.jwt_token_absent").$e->getStatusCode()); }
by kocor
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30865.html
摘要:默認的時間為周。大概意思就是如果用戶有一個,那么他可以帶著他的過來領取新的,直到周的時間后,他便無法繼續刷新了,需要重新登錄。指定在刷新令牌時要保留的聲明密鑰。為了使令牌無效,您必須啟用黑名單。指定用于對用戶進行身份驗證的提供程序。 showImg(https://segmentfault.com/img/remote/1460000012606251?w=1920&h=1280); ...
摘要:如何做用戶認證根據文檔描述,提供用戶認證的接口,他的核心是看守器和提供器,看守器定義怎么認證用戶,提供器定義怎么檢索用戶。 最近的一個PHP項目,上一個項目是采用ThinkPHP來弄的,因為很早就聽說過Laravel的大名,所以進了Laravel的官網,意外發現了Lumen,正好我項目是提供API的,所以選擇了Lumen,因為是Laravel的精簡版,看了幾天的Laravel文檔,也總...
摘要:擴展用戶認證系統上一節我們介紹了系統實現的一些細節知道了是如何應用看守器和用戶提供器來進行用戶認證的,但是針對我們自己開發的項目或多或少地我們都會需要在自帶的看守器和用戶提供器基礎之上做一些定制化來適應項目,本節我會列舉一個在做項目時遇到的 擴展用戶認證系統 上一節我們介紹了Laravel Auth系統實現的一些細節知道了Laravel是如何應用看守器和用戶提供器來進行用戶認證的,但是...
摘要:本文來自原文鏈接歡迎作客我們的學習群這個例子將引導你在中使用來創建用戶登錄和注冊的。是的簡稱,可以幫助我們創建用戶認證,以此連接前后端。 本文來自pilishen.com----原文鏈接; 歡迎作客我們的php&Laravel學習群:109256050 這個例子將引導你在laravel中使用JWT來創建用戶登錄和注冊的API。JWT是Json Web Token的簡稱,可以幫助我們創建...
摘要:以及敏捷開發的先驅者之一的有句名言如果你沒有進行測試驅動開發,那么你應該正在做開發后堵漏的事今天我們將進行一場基于的測試驅動開發之旅。使用生成測試類。現在使用命令來生成模型并將其添加到我們的模型中。 showImg(https://segmentfault.com/img/remote/1460000018404936?w=1440&h=900); TDD 以及敏捷開發的先驅者之一的?...
閱讀 1523·2023-04-26 02:03
閱讀 4707·2021-11-22 13:53
閱讀 4579·2021-09-09 11:40
閱讀 3782·2021-09-09 09:34
閱讀 2125·2019-08-30 13:18
閱讀 3501·2019-08-30 11:25
閱讀 3295·2019-08-26 14:06
閱讀 2545·2019-08-26 13:52