Почему JWT перенаправить на страницу входа. Laravel REST Api - PullRequest
0 голосов
/ 31 мая 2019

Я развертываю RestApi с Laravel 5.5 и использую JWT ("tymon / jwt-auth": "dev -velop") для аутентификации, PostMan для тестирования и Php 7.3.3-1. Я выполнил все шаги с официального сайта ( JWT Tymon ). Он работает нормально, когда я пытаюсь войти в систему, даже он возвращает ошибку, если пароль или адрес электронной почты неверны. Но когда я пытаюсь получить доступ к контенту, которым хочу поделиться на Api, он возвращает хранилище сеансов, не настроенное по запросу.

Это мои маршруты провайдеров:

protected function mapResourcesv2()
    {
        Route::prefix('api')
            ->middleware('api')
            ->namespace($this->namespace)
            ->group(base_path('routes/resources.php'));
//        Route::group([
//            'prefix' => 'api',
//            'middleware' => 'auth:api',
//            'namespace' => $this->namespace,
//        ], function ($router) {
//            require base_path('routes/resources.php');
//        });
    }

Строка комментариев - это маршруты, которые я использую во всех моих файлах (многие маршруты не очень хорошая идея, когда все маршруты в одном файле). Только строка no-comm работает нормально.

Файл AuthController аналогичен официальному сайту ( Быстрый запуск ).

А это мой LoginController:

    public function __construct(Request $request)
    {
        $this->middleware('guest', ['except' => ['logout', 'getLogout']]);
        $this->request = $request;
    }
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');
        Route::group(
            [
                'prefix' =>  'product',
            ],
            function()
            {
                Route::post('price/{id}', 'Resources\Entrypoint\Http\Laravel\Product\ProductGetController@getPrice');
                Route::post('price', 'ProductPostController@changePrice');
            }
        );
    }
);

Это маршруты, которые возвращают страницу входа (оба не были отредактированы, может мне что-то отредактировать?)

Route::get('blackboard/login', 'Auth\LoginController@showBlackboardLogin');
Route::post('blackboard/login', 'Auth\LoginController@postAdminLogin');

Файл LoginController:

    public function showBlackboardLogin(){

        return view('blackboard/login');
    }
    public function postAdminLogin(Request $request){
        $request->session()->put('login',Carbon::now()->toDateTimeString());
        $conditions = [
              'email' => $this->request->input('email'),
              'password' => $this->request->input('password'),
              'active' => 1,
        ];
        if(Auth::attempt($conditions, $this->request->has('remember'))){
            return redirect('blackboard');
        }else{
            //TODO, mensaje mal
            return redirect('blackboard/login');
        }
    }

В почтальоне я использую вкладку «Авторизация» и «type: Bearer Token» и вставляю токен, сгенерированный после входа в систему.

Пользователь должен иметь доступ к маршрутам из '/ product'. Но это работает только для входа в систему, если я пытаюсь получить доступ к «/ мне», он перенаправляет на страницу входа в систему (работает только вход в систему и возвращает ошибку, если пароль неправильный). На самом деле ошибка Хранилище сеансов не установлено по запросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...