JWT 身份验证 Laravel

Posted

技术标签:

【中文标题】JWT 身份验证 Laravel【英文标题】:JWT Authentication Laravel 【发布时间】:2020-01-05 20:24:41 【问题描述】:

我正在尝试在 laravel 中安装 jwt 身份验证,但我正在使用 laravel 5.8 和 JWT,遵循此 https://tutsforweb.com/restful-api-in-laravel-56-using-jwt-authentication/ ,但显示此错误。

我的vendor/tymon/jwt-auth/src/jwt.php有问题

182 200 行之间

public function parseToken()
    
        if (! $token = $this->parser->parseToken()) 
            throw new JWTException('The token could not be parsed from the request');
        

        return $this->setToken($token);
    

好吧,我找到了这个建议,我遵循了这个Laravel - JWT Auth The token could not be parsed from the request

public function parseToken($method = 'bearer', $header = 'authorization', $query = 'token')

    if (! $token = $this->parseAuthHeader($header, $method)) 
        if (! $token = $this->request->query($query, false)) 
            throw new JWTException('The token could not be parsed from the request', 400);
        
    

    return $this->setToken($token);


/**
 * Parse token from the authorization header.
 *
 * @param string $header
 * @param string $method
 *
 * @return false|string
 */
protected function parseAuthHeader($header = 'authorization', $method = 'bearer')

    $header = $this->request->headers->get($header);

    if (! starts_with(strtolower($header), $method)) 
        return false;
    

    return trim(str_ireplace($method, '', $header));

我该如何改变这个?

ErrorException:未定义的属性:Tymon\JWTAuth\JWTAuth::$request 在 C:\laragon\www\ecommerce\vendor\tymon\jwt-auth\src\JWT.php:203

【问题讨论】:

看看这个你会发现它很有帮助***.com/a/51542391/7593083 【参考方案1】:

尝试此步骤来设置您的 JWT 登录,

    在你的 Laravel 应用中安装 JWT 包

    文档:https://jwt-auth.readthedocs.io/en/docs/laravel-installation/

    composer require tymon/jwt-auth:dev-develop

    composer require tymon/jwt-auth:1.0.0-rc.5

    在你里面添加JWTMiddlewareApp\Http\Middleware

    https://github.com/kennethtomagan/laravel-5-api-boilerplate/blob/master/app/Http/Middleware/JWTMiddleware.php

    $routeMiddlewareApp\Http\kernel.php 文件中注册此中间件。

protected $routeMiddleware = [
      ....
      ....
      'jwt' => \App\Http\Middleware\JWTMiddleware::class,
  ];
    设置你的控制器

示例: https://github.com/kennethtomagan/laravel-5-api-boilerplate/blob/master/app/Http/Controllers/Auth/AuthController.php

    设置您的 API 路由
Route::group(['middleware' => [ 'jwt', 'jwt.auth']], function () 
    ....
    ....
    );

希望对你有帮助,

工作示例:https://github.com/kennethtomagan/laravel-5-api-boilerplate

【讨论】:

以上是关于JWT 身份验证 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

没有数据库的 Laravel 中的 JWT 身份验证

Angular 和 Laravel 身份验证 JWT?

Laravel 5.7 + Spatie 权限 + JWT 身份验证

Laravel:实现 JWT 身份验证时出错

Laravel /w 离子 JWT 身份验证

Laravel JWT 身份验证