Я создаю приложение @ vue / cli 4.0.5 / vuex 3 со считыванием данных из Laravel 6 Backend REST API-приложение с паспортом в качестве аутентификации, и я хочу установить большее время во время сеанса во время разработки и для этого в моем приложении /Http/Controllers/AuthController.php Я изменил время и сессию
protected function respondWithToken($token)
{
$loggedUser = $this->guard()->user();
$user_avatar_path = User::getUserAvatarPath($loggedUser->id, $loggedUser->avatar);
$filenameData = User::setUserAvatarProps($loggedUser->id, $loggedUser->avatar, true);
return response()->json([
'access_token' => $token,
'user' => $loggedUser,
'token_type' => 'bearer',
'user_avatar_path' => $user_avatar_path,
'filenameData' => $filenameData,
'expires_in' => $this->guard('api')->factory()->getTTL() * 660
]);
}
Но, похоже, эти изменения не влияют на мое приложение. Я пропустил некоторые варианты? 2) Также, как я вижу, параметр expires_in начинает свое время со времени входа в систему, и мне кажется, что это не то, что я хочу, так как я хочу, чтобы этот параметр работал как время от последней работы в приложении. Другими словами, любой запрос к бэкэнд-части должен переосмыслить sh этот этот параметр ...
ИЗМЕНЕНО: Я прочитал в «Срок действия токена паспорта»:
По умолчанию Passport выдает долгоживущие токены доступа, срок действия которых истекает через год
Похоже, проблема не в этом, так как у меня есть опции по умолчанию (один год). Есть ли некоторые опции на стороне vuejs, когда я использую vue -ресурс
Здесь https://github.com/pagekit/vue-resource/blob/master/docs/api.md Я вижу, что vue -ресурс имеет опцию тайм-аута (число), но Я не уверен, как это применимо? Я вхожу в запрос:
Vue.http.post(apiUrl + '/auth/login', userCredentials).then(response => {
...
?
MODIFIED # 2:
У меня в бэкэнд-приложении:
"php": "^7.2",
"barryvdh/laravel-cors": "^0.11.4",
"laravel/framework": "^6.2",
"laravel/passport": "^8.1",
И в части Vue / Cli:
"store": "^2.0.12",
"vue": "^2.6.10",
"vue-js-modal": "^1.3.31",
"vue-resource": "^1.5.1",
"vue-router": "^3.1.3",
"vuex": "^3.1.2"
На самом деле я хочу, чтобы в бэкэнд-приложении в config / app. php, чтобы установить некоторый параметр, например
'personal_access_tokens_expire_in_hours' => 24, // Actually I think about value = 1
, и использовать его в 2 места: в приложении / Providers / AuthServiceProvider. php:
public function boot()
{
$this->registerPolicies();
Passport::routes();
$personal_access_tokens_expire_in_hours = config('app.personal_access_tokens_expire_in_hours',24);
Passport::personalAccessTokensExpireIn(Carbon::now()->addHours($personal_access_tokens_expire_in_hours));
}
и в приложении / Http / Controllers / AuthController. php:
public function login(Request $request)
{
$credentials = request(['email', 'password']);
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean'
]);
if ( ! Auth::attempt($credentials)) {
return response()->json(['message' => 'Unauthorized'], 401);
}
$user = $request->user();
$user->last_logged= Carbon::now(config('app.timezone'));
$user->save();
$tokenResult = $user->createToken('Access Token');
$token = $tokenResult->token;
if ($request->remember_me) {
$personal_access_tokens_expire_in_hours = config('app.personal_access_tokens_expire_in_hours',24);
$token->expires_at = Carbon::now()->addHours($personal_access_tokens_expire_in_hours);
} // Though Ronak Dhoot wrote that $token->expires_at does not infleunce anything.
Я добавил поле last_logged пользователям и заполните его при любом входе в систему.
При значении по умолчанию personalAccessTokensExpireIn через 1 день я вхожу в систему в середине моего рабочего дня. Я выключаю компьютер в конце дня и, открывая его на следующее утро, я могу войти в свое приложение с тем входом, который я сделал вчера (24 часа еще не прошло). Это кажется небезопасным для меня.
Я бы предпочел personalAccessTokensExpireIn = 1 час и переименовать sh это ЛЮБОЙ авторизованный запрос из моего приложения vue / cli. Каким образом это можно сделать? Работаете над приложениями vue / cli с baxkend api, каким способом вы пользуетесь?
У меня есть некоторая предварительная работа с auth / jwt и в app / Http / Controllers / API / AuthController. php Я нашел методы:
public function refresh() // THIS METHOD IS NOT CALLED ANYWHERE
{
return $this->respondWithToken($this->guard()->refresh());
}
protected function respondWithToken($token)
{
$loggedUser= $this->guard()->user();
$user_avatar_path= User::getUserAvatarPath($loggedUser->id, $loggedUser->avatar);
$filenameData = User::setUserAvatarProps($loggedUser->id, $loggedUser->avatar, true);
$usersGroups= User::getUsersGroupsByUserId($loggedUser->id, false);
return response()->json([
'access_token' => $token,
'user' => $loggedUser,
'token_type' => 'bearer',
'user_avatar_path' => $user_avatar_path,
'filenameData' => $filenameData,
'usersGroups' => $usersGroups,
'expires_in' => $this->guard('api')->factory()->getTTL() * 9360 // TOFIX
]);
}
Можно ли как-нибудь использовать refre sh () в моем паспорте?
Спасибо!