Lumen JWT Authentication проходит проверку - PullRequest
0 голосов
/ 20 июня 2019

У меня странная ошибка при использовании Lumen и JWT Authentication. Мы создали одно мобильное приложение и одно веб-приложение, и мы используем JWT Auth для аутентификации пользователей. Мы добавили некоторые сообщения электронной почты, когда есть ошибки, чтобы мы могли их оперативно исправить.

Проблема объяснила: Иногда наши пользователи передают JWT Middleware или Guard, и выполняется код, который предлагается для аутентификации.

Этим утром мы получили ошибку SQL, как показано ниже:

Error Image У нас, например, MobileController ведьма расширяет основную Controller. В основном контроллере мы написали этот код в методе __construct

if(Auth::check() && Auth::user() == NULL) {
    Auth::logout();
    return abort(401, 'Unauthorized.');
}

Даже с этим кодом, пользователь проходит проверку подлинности.

Это наш пример кода:

маршруты / web.php

$router->group(['middleware' => 'auth:user'], function ($router) {
    $router->group(['prefix' => 'mobile/'], function ($router) {
        $router->post('/company/department', ['uses' => 'MobileController@createCompanyDepartment']);
    });
});

приложение / Http / Контроллеры / Controller.php

class Controller extends BaseController
{
    /**
     * Assigned table
     * for this model
     *
     * @var string
     */
    protected $user;
    protected $client;
    protected $company;

    public function __construct()
    {
        if(Auth::check() && Auth::user() == NULL) {
            Auth::logout();
            return abort(401, 'Unauthorized.');
        }

        if(Auth::guard('user')->check()) {
            $this->user = Auth::user();
            $this->company = Company::join('languages', 'languages.id', '=', 'companies.language_id')
                ->select('companies.*', 'languages.code as language_code')
                ->find($this->user->company_id);
        } else if(Auth::guard('client')->check()) {
            $this->client = Auth::guard('user')->client();
        } else {
            $this->user = NULL;
        }
    }
}

приложение / Http / Контроллеры / MobileController.php

public function createCompanyDepartment(Request $request)
{
    $this->validate($request, [
        'name'  => 'required',
    ]);

    Department::createDepartment($this->user->company_id, $request->input('name'));
    $response = Department::getMobileDepartmentsByCompany($this->user);

    return response()->json($response);
}

Мы ожидаем, что наши неавторизованные пользователи получат ошибку Unauthorized 401, но иногда они проходят мимо защиты. Если мы пытаемся запустить код на локальном сервере без аутентификации, мы получаем сообщение Unauthorized 401, но на производстве иногда наши пользователи проходят мимо защиты. Может быть, срок действия токена истекает? Это мой .env

AUTH_GUARD=user
JWT_KEY=XXXXXXXXXXXXXXXXXXXXX
JWT_EXPIRE_AFTER=25920000

Кто-нибудь сталкивался с этой проблемой или имеет какое-либо представление, почему это происходит? Спасибо!

...