Я развертываю 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'.
Но это работает только для входа в систему, если я пытаюсь получить доступ к «/ мне», он перенаправляет на страницу входа в систему (работает только вход в систему и возвращает ошибку, если пароль неправильный). На самом деле ошибка Хранилище сеансов не установлено по запросу.