亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

laravel5.5 + jwt-auth 1.0.0-rc.2 多表多種用戶認(rèn)證規(guī)式

tangr206 / 1497人閱讀

摘要:在下新建無效無效然后在的下添加自定義的跨域中間鍵在路由和下的構(gòu)造函數(shù)調(diào)用。免責(zé)由于時(shí)間關(guān)系,沒有在截圖了,參考此文章的小伙伴自行進(jìn)行測(cè)試下面例子源用了很多文檔代碼

安裝
composer create-project --prefer-dist laravel/laravel sample "5.5.*"

安裝依賴
composer install
安裝jwt-auth
composer require tymon/jwt-auth

or
在composer.json中添加 `"tymon/jwt-auth": "^1.0.0-rc.2",`
終端:composer update

config/app.phpproviders

"providers" => [

    ...

    TymonJWTAuthProvidersLaravelServiceProvider::class,
]

終端運(yùn)行:php artisan vendor:publish --provider="TymonJWTAuthProvidersLaravelServiceProvider"會(huì)產(chǎn)生config/jwt.php的配置文件

再運(yùn)行:php artisan jwt:secret生成key

建Model

運(yùn)行:

php artisan make:model Models/Admin -m
php artisan make:model Models/User -m

database/migrations下
遷移文件中

    **admins:**
Schema::create("admins", function (Blueprint $table) {
    $table->increments("id");
    $table->string("name");
    $table->string("email")->unique();
    $table->string("password");
    $table->string("avatar")->nullable();
    $table->timestamps();
});
    **users:**
Schema::create("users", function (Blueprint $table) {
    $table->increments("id");
    $table->string("name");
    $table->string("email")->unique();
    $table->string("password");
    $table->string("avatar")->nullable();
    $table->timestamps();
});

修改Model(USer和Admin是一樣的)
getKey();
    }

    /**
     * Return a key value array, containing any custom claims to be added to the JWT.
     *
     * @return array
     */
    public function getJWTCustomClaims()
    {
        return [];
    }
}

config/auth.php中配置,找到對(duì)應(yīng)的修改成自己的

"guards" => [

"web" => [
    "driver" => "session",
    "provider" => "users",
],

"api" => [
    "driver" => "jwt",
    "provider" => "users",
],

"admin" => [
    "driver" => "jwt",
    "provider" => "admins",
],

],

"providers" => [

"users" => [
    "driver" => "eloquent",
    "model" => AppModelsUser::class,
    "table" => "users",
],

"admins" => [
    "driver" => "eloquent",
    "model" => AppModelsAdmin::class,
    "table" => "admin_users"
],

],

路由

routes/api.php
Route::group([

"middleware" => "api",
"prefix" => "auth"

], function ($router) {

Route::post("login", "AuthController@login");
Route::post("logout", "AuthController@logout");
Route::post("refresh", "AuthController@refresh");
Route::post("me", "AuthController@me");

});

控制器(關(guān)鍵)

運(yùn)行:php artisan make:controller AdminController創(chuàng)建控制器
注:此處主要是用了guard("admin")來區(qū)分要調(diào)用的表和Model這里是在auth.php中配置的

middleware("myauth", ["except" => ["login"]]);
    }

    /**
     * Get a JWT via given credentials.
     *
     * @return IlluminateHttpJsonResponse
     */
    public function login()
    {
        $credentials = request(["email", "password"]);

        if (! $token = auth()->guard("admin")->attempt($credentials)) {
            return response()->json(["error" => "Unauthorized"], 401);
        }

        return $this->respondWithToken($token);
    }

    /**
     * Get the authenticated User.
     *
     * @return IlluminateHttpJsonResponse
     */
    public function me()
    {
        return response()->guard("admin")->json(auth()->user());
    }

    /**
     * Log the user out (Invalidate the token).
     *
     * @return IlluminateHttpJsonResponse
     */
    public function logout()
    {
        auth()->guard("admin")->logout();

        return response()->json(["message" => "Successfully logged out"]);
    }

    /**
     * Refresh a token.
     *
     * @return IlluminateHttpJsonResponse
     */
    public function refresh()
    {
        return $this->respondWithToken(auth()->guard("admin")->refresh());
    }

    /**
     * Get the token array structure.
     *
     * @param  string $token
     *
     * @return IlluminateHttpJsonResponse
     */
    protected function respondWithToken($token)
    {
        return response()->json([
            "access_token" => $token,
            "token_type" => "bearer",
            "expires_in" => auth()->factory()->getTTL() * 60
        ]);
    }
}
中間鍵

由于使用了多表認(rèn)證,所以不能使用jwt自帶的中間鍵auth:api or jwt.auth,我自己建了一個(gè)中間鍵[myauth]來做路由驗(yàn)證。
在app/Http/Middleware下新建

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesAuth;

class AuthMiddleware {
    public function handle($request, Closure $next)
    {

        try {
            $user = auth()->guard("admin")->userOrFail();
            if(!$user) {
                return response()->json(["message" => "jwt 無效"], 401);
            }
        } catch (TymonJWTAuthExceptionsUserNotDefinedException $e) {
            return response()->json(["message" => "jwt 無效"], 401);
        }
        return $next($request);
    }
}

然后在app/Http/Kernel$routeMiddleware下添加
protected $routeMiddleware = [

    ...

    "cors" => AppHttpMiddlewareClientRequestCors::class, //自定義的跨域中間鍵
    "myauth" => AppHttpMiddlewareAuthMiddleware::class,

    ...

];

在路由和Controller下的構(gòu)造函數(shù)調(diào)用。

免責(zé)

由于時(shí)間關(guān)系,沒有在PostMan截圖了,參考此文章的小伙伴自行進(jìn)行測(cè)試
下面例子源用了很多jwt-auth文檔代碼

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/30738.html

相關(guān)文章

  • laravel5.5+dingo+JWT開發(fā)后臺(tái)API

    摘要:我的博客中文文檔中使用輔助文章參考這篇文章基本就能搭建出環(huán)境,我使用的版本跟他一樣,不知道別的版本有啥大的區(qū)別,但是網(wǎng)上找的其他一些文章使用的是舊的版本,封裝的東西路徑可能不一樣,可能會(huì)保錯(cuò),有些文檔還說要手動(dòng)添加和,其實(shí)新版本不需要。 我的github博客:https://zgxxx.github.io/ dingo api 中文文檔: https://www.bookstack....

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

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

    AZmake 評(píng)論0 收藏0
  • laravel使用JWT做API認(rèn)證

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

    SexySix 評(píng)論0 收藏0
  • Laravel 5.5 使用 Jwt-Auth 實(shí)現(xiàn) API 用戶認(rèn)證以及無痛刷新訪問令牌

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

    xavier 評(píng)論0 收藏0
  • 學(xué)習(xí) Lumen 用戶認(rèn)證 (二) —— 使用 jwt-auth 插件

    摘要:在開發(fā)中,用戶認(rèn)證是核心,是數(shù)據(jù)是否有保障的前提,目前主要有兩種常用方式進(jìn)行用戶認(rèn)證和。為了學(xué)習(xí)在中的使用,最好的辦法就是在程序員同志網(wǎng)搜索有關(guān)插件,找個(gè)最多的那個(gè)拿來研究研究。 通過上一篇《學(xué)習(xí) Lumen 用戶認(rèn)證 (一)》https://mp.weixin.qq.com/s/KVUQE2DUetNB2kqxHs0VDg的學(xué)習(xí),大致懂了 Lumen 的用戶認(rèn)證主要使用 「api」的...

    姘存按 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<