成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

laravel使用JWT做API認(rèn)證

SexySix / 2409人閱讀

摘要:最近項目做認(rèn)證,最終技術(shù)選型決定使用,項目框架使用的是,使用有比較方便使用的開源包。使用安裝,使用的框架版本為,最新穩(wěn)定版本為。

最近項目做API認(rèn)證,最終技術(shù)選型決定使用JWT,項目框架使用的是laravel,laravel使用JWT有比較方便使用的開源包:jwt-auth。
使用composer安裝jwt-auth,laravel使用的框架版本為5.0,jwt-auth最新穩(wěn)定版本為0.5.12。(最新版為1.0.*,需laravel5.4以上)
composer require tymon/jwt-auth 0.5.*
安裝完成后,需要在config/app.php中注冊相應(yīng)的服務(wù)提供者:
"providers" => [
    "TymonJWTAuthProvidersJWTAuthServiceProvider",
],
然后注冊需要用到的對應(yīng)門面:
"aliases" => [
    "JWTAuth"   => "TymonJWTAuthFacadesJWTAuth",
    "JWTFactory" => "TymonJWTAuthFacadesJWTFactory",
],
然后發(fā)布相應(yīng)配置文件:此命令會在 config 目錄下生成一個 jwt.php 配置文件,你可以在此進(jìn)行自定義配置。
php artisan vendor:publish --provider="TymonJWTAuthProvidersJWTAuthServiceProvider"
最后生成密鑰:此命令會在你的 .env 文件中新增一行 JWT_SECRET=secret
php artisan jwt:generate

生成TOKEN,生成TOKEN有多種方式:下面介紹兩種
一、根據(jù)模型為基礎(chǔ)生成TOKEN:

根據(jù)模型生成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;
    ...
}
根據(jù)模型生成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有效期內(nèi)允許刷新
    $newToken = JWTAuth::refresh($_REQUEST["token"]);
    return Api::json(config("statusCode.success"), trans("message.success"),$newToken);
} catch (TokenExpiredException $e) {
    try {
        //在刷新有效期內(nèi)
        $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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30865.html

相關(guān)文章

  • Laravel 5.5 使用 Jwt-Auth 實現(xiàn) API 用戶認(rèn)證以及無痛刷新訪問令牌

    摘要:默認(rèn)的時間為周。大概意思就是如果用戶有一個,那么他可以帶著他的過來領(lǐng)取新的,直到周的時間后,他便無法繼續(xù)刷新了,需要重新登錄。指定在刷新令牌時要保留的聲明密鑰。為了使令牌無效,您必須啟用黑名單。指定用于對用戶進(jìn)行身份驗證的提供程序。 showImg(https://segmentfault.com/img/remote/1460000012606251?w=1920&h=1280); ...

    xavier 評論0 收藏0
  • Lumen用戶認(rèn)證JWT,源碼解讀

    摘要:如何做用戶認(rèn)證根據(jù)文檔描述,提供用戶認(rèn)證的接口,他的核心是看守器和提供器,看守器定義怎么認(rèn)證用戶,提供器定義怎么檢索用戶。 最近的一個PHP項目,上一個項目是采用ThinkPHP來弄的,因為很早就聽說過Laravel的大名,所以進(jìn)了Laravel的官網(wǎng),意外發(fā)現(xiàn)了Lumen,正好我項目是提供API的,所以選擇了Lumen,因為是Laravel的精簡版,看了幾天的Laravel文檔,也總...

    AZmake 評論0 收藏0
  • Laravel核心解讀 -- 擴(kuò)展用戶認(rèn)證系統(tǒng)

    摘要:擴(kuò)展用戶認(rèn)證系統(tǒng)上一節(jié)我們介紹了系統(tǒng)實現(xiàn)的一些細(xì)節(jié)知道了是如何應(yīng)用看守器和用戶提供器來進(jìn)行用戶認(rèn)證的,但是針對我們自己開發(fā)的項目或多或少地我們都會需要在自帶的看守器和用戶提供器基礎(chǔ)之上做一些定制化來適應(yīng)項目,本節(jié)我會列舉一個在做項目時遇到的 擴(kuò)展用戶認(rèn)證系統(tǒng) 上一節(jié)我們介紹了Laravel Auth系統(tǒng)實現(xiàn)的一些細(xì)節(jié)知道了Laravel是如何應(yīng)用看守器和用戶提供器來進(jìn)行用戶認(rèn)證的,但是...

    王偉廷 評論0 收藏0
  • Laravel使用JWT來創(chuàng)建用戶認(rèn)證API

    摘要:本文來自原文鏈接歡迎作客我們的學(xué)習(xí)群這個例子將引導(dǎo)你在中使用來創(chuàng)建用戶登錄和注冊的。是的簡稱,可以幫助我們創(chuàng)建用戶認(rèn)證,以此連接前后端。 本文來自pilishen.com----原文鏈接; 歡迎作客我們的php&Laravel學(xué)習(xí)群:109256050 這個例子將引導(dǎo)你在laravel中使用JWT來創(chuàng)建用戶登錄和注冊的API。JWT是Json Web Token的簡稱,可以幫助我們創(chuàng)建...

    zzbo 評論0 收藏0
  • 使用 TDD 測試驅(qū)動開發(fā)來構(gòu)建 Laravel REST API

    摘要:以及敏捷開發(fā)的先驅(qū)者之一的有句名言如果你沒有進(jìn)行測試驅(qū)動開發(fā),那么你應(yīng)該正在做開發(fā)后堵漏的事今天我們將進(jìn)行一場基于的測試驅(qū)動開發(fā)之旅。使用生成測試類?,F(xiàn)在使用命令來生成模型并將其添加到我們的模型中。 showImg(https://segmentfault.com/img/remote/1460000018404936?w=1440&h=900); TDD 以及敏捷開發(fā)的先驅(qū)者之一的?...

    AlphaWallet 評論0 收藏0

發(fā)表評論

0條評論

SexySix

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<