Laravel 中的 JWT 身份验证无需数据库

Kar*_*ill 5 php jwt laravel guzzle laravel-5

我有一个关于 Laravel 5.x 中的身份验证的问题。我\xe2\x80\x99一直在专门查看tymondesigns/jwt-authirazasyed/jwt-auth-guard打包以在我的 Laravel 应用程序中进行 JSON Web 令牌身份验证令牌处理。

\n

我没有使用本地数据库,也不想使用。我在 .env 中为我的 API\xe2\x80\x99s 设置了环境变量URL, USERNAME & PASSWORD。Guzzle PHP HTTP 客户端做得很好,根据需要在 API 和我的应用程序之间连接并返回数据。

\n

但是,我需要在 Laravel 实例中设置身份验证。我在这里遇到问题,身份验证需要数据库连接。

\n
$token = JWTAuth::attempt($credentials)\n
Run Code Online (Sandbox Code Playgroud)\n

这是例外情况:

\n
\n
PDOException in Connector.php line 55: \nSQLSTATE[HY000] [14] unable to open database file\n
Run Code Online (Sandbox Code Playgroud)\n
\n
    \n
  1. 如何在不使用数据库的情况下使用 JWT?
  2. \n
  3. 如何完全关闭 Laravel 中的数据库连接?
  4. \n
\n

谢谢。

\n
\n

更新:

\n

使用tymon/jwt-auth,我已经在路由、内核、中间件等中设置了一些东西。

\n

我成功创建了“声明”,但我需要通过编码“有效负载”来创建令牌。

\n
PDOException in Connector.php line 55: \nSQLSTATE[HY000] [14] unable to open database file\n
Run Code Online (Sandbox Code Playgroud)\n

如何获取自定义令牌?

\n

Kar*_*ill 0

作为快速修复,我决定实现以下自定义代码......

1)创建自定义中间件来处理逻辑。

class CustomMiddleware
{
    protected $loginPath = 'login';

    public function handle($request, Closure $next) {
        $logged_in = $request->session()->get('logged_in');

        if (!$logged_in) {
            return redirect()->guest('login')->with('flag','1');
        }

    return $next($request);
    }
}
Run Code Online (Sandbox Code Playgroud)

2) 添加了对中间件类的引用。

class Kernel extends HttpKernel
{
    protected $routeMiddleware = [
        'custom' => \App\Http\Middleware\CustomMiddleware::class,
    ];
}
Run Code Online (Sandbox Code Playgroud)

3)将其添加到routes.php。

Route::group(['middleware' => ['custom']], function () {
    // Add routes here
}
Run Code Online (Sandbox Code Playgroud)