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

資訊專欄INFORMATION COLUMN

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

tangr206 / 1433人閱讀

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

安裝
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"會產(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中配置,找到對應(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,我自己建了一個中間鍵[myauth]來做路由驗證。
在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é)

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

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

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

相關(guān)文章

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

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

    printempw 評論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使用JWT做API認(rèn)證

    摘要:最近項目做認(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)定版本...

    SexySix 評論0 收藏0
  • 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
  • 學(xué)習(xí) Lumen 用戶認(rèn)證 (二) —— 使用 jwt-auth 插件

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

    姘存按 評論0 收藏0

發(fā)表評論

0條評論

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