国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

通過路由中間件JWT多表認(rèn)證

Deep
  1. composer require tinywan/jwt

  2. 用戶端路由使用jwt中間件
    Route::get('/profile', \app\api\user\controller\UserController::class . '@profile')->middleware([
    \app\middleware\JwtUser::class
    ]);

  3. 管理員后臺(tái)路由使用jwt中間件
    Route::get('/profile', \app\api\admin\controller\UserController::class . '@profile')->middleware([
    \app\middleware\JwtAdmin::class
    ]);

JwtUser.php

<?php

namespace app\middleware;

use app\model\User;
use Exception;
use Illuminate\Support\Arr;
use Tinywan\Jwt\Token;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

class JwtUser implements MiddlewareInterface
{
    /**
     * @throws Exception
     */
    public function process(Request $request, callable $handler): Response
    {
        try {
            Token::getUser();
        } catch (Exception $e) {
            return response('unauthorized', 401);
        }

        $user = Token::getExtend();

        if (Arr::get($user, 'role') !== 'user') {
            return response('unauthorized', 401);
        }

        if (!User::query()->where('id', $user['uid'])->exists()) {
            Token::clear();
            return response('unauthorized', 401);
        }       

        return $handler($request);
    }
}

JwtAdmin.php

<?php

namespace app\middleware;

use Exception;
use Illuminate\Support\Arr;
use Tinywan\Jwt\Token;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

class JwtAdmin implements MiddlewareInterface
{
    public function process(Request $request, callable $handler): Response
    {
        try {
            Token::getUser();
        } catch (Exception $e) {
            return response('unauthorized', 401);
        }

        $admin = Token::getExtend();

        if (Arr::get($admin, 'role') !== 'admin') {
            return response('unauthorized', 401);
        }

        if (!Admin::query()->where('id', $admin['uid'])->exists()) {
            Token::clear();
            return response('unauthorized', 401);
        }       

        return $handler($request);
    }
}

用戶控制器
\app\api\user\controller\UserController::class
login方法中

$user = User::query()->find(1);

$user = $user->toArray();

$user['uid'] = $user['id'];
$user['id'] = 'user:' . $user['id'];
$user['role'] = 'user';

Token::generateToken($user);

管理員控制器
\app\api\admin\controller\UserController::class
login方法中

$admin = Admin::query()->find(1);

$admin = $admin->toArray();

$admin['uid'] = $admin['id'];
$admin['id'] = 'admin:' . $admin['id'];
$admin['role'] = 'admin';

Token::generateToken($admin);

修改配置文件
/config/plugin/tinywan/jwt/app.php 配置文件中 is_single_device = true

退出登錄
Token:clear()

274 0 0
0個(gè)評論

Deep

220
積分
0
獲贊數(shù)
0
粉絲數(shù)
2025-04-24 加入
??