mstdmstd
Новичок
Всем привет,
Делая laravel 7 backend rest api приложение с использованием jwt-auth и настройками в /config/jwt.php
и с @vue/cli 4.0.5 / vuex приложением для клиента
Проблема что если пользователь работает под логином то через 20 минут генерится 401 ошибка
с логаутом на фронтенде
Но нужно чтобы 401 генерился если в течении 20 минут клиентское приложение простаивает...
Тут https://github.com/tymondesigns/jwt-auth/wiki/Authentication
я нашел описание метода getAuthenticatedUser - вроде он для этого и предназачен ?
Я вставил его в свой app/Http/Controllers/API/AuthController.php и натыкал в него
сообщений в лог - и вижу что этот метод не вызывается.
В app/Http/Kernel.php :
/config/auth.php :
routes/api.php :
app/Http/Controllers/API/Admin/DashboardController.php :
Я полагаю что как раз при вызове
и должен вызываться метод getAuthenticatedUser
Но видимо что-то не настроено ?
Спасибо !
Делая laravel 7 backend rest api приложение с использованием jwt-auth и настройками в /config/jwt.php
PHP:
[B]'ttl' [/B]=> 20, [I]# 20 minutes[/I]
'refresh_ttl' => 20160, // [I]2 weeks[/I]
Проблема что если пользователь работает под логином то через 20 минут генерится 401 ошибка
с логаутом на фронтенде
Но нужно чтобы 401 генерился если в течении 20 минут клиентское приложение простаивает...
Тут https://github.com/tymondesigns/jwt-auth/wiki/Authentication
я нашел описание метода getAuthenticatedUser - вроде он для этого и предназачен ?
Я вставил его в свой app/Http/Controllers/API/AuthController.php и натыкал в него
сообщений в лог - и вижу что этот метод не вызывается.
В app/Http/Kernel.php :
PHP:
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
];
PHP:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
],
PHP:
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('app_settings', 'API\HomeController@app_settings');
Route::post('login', 'API\AuthController@login');
Route::post('register', 'API\AuthController@register');
Route::post('logout', 'API\AuthController@logout');
Route::post('refresh', 'API\AuthController@refresh');
Route::post('me', 'API\AuthController@me');
Route::group(['middleware' => 'jwt.auth', 'prefix' => 'adminarea', 'as' => 'adminarea.'], function ($router) {
Route::get('dashboard', 'API\Admin\DashboardController@index');
...
PHP:
<?php
namespace App\Http\Controllers\API\Admin;
use App\Http\Resources\TaskCollection;
use Auth;
use DB;
use Validator;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Facades\MyFuncsClass;
class DashboardController extends Controller
{
private $requestData;
public function __construct()
{
$request = request();
$this->requestData = $request->all();
}
public function index()
{
if ( ! MyFuncsClass::checkUserGroup([ACCESS_ROLE_ADMIN])) {
return response()->json(['error' => 'Unauthorized'], HTTP_RESPONSE_NOT_UNAUTHORIZED);
}
$loggedUser = Auth::guard('api')->user();
\Log::info('PersonalController index $loggedUser->id::');
\Log::info(print_r( $loggedUser->id, true ));
PHP:
$loggedUser = Auth::guard('api')->user();
Но видимо что-то не настроено ?
Спасибо !