В настоящее время я пытаюсь создать простой SPA, используя Vue и Laravel. У меня есть основы для работы - пользователи могут зарегистрироваться и войти в систему.
Я просто не могу понять, как создать функцию выхода из системы.
Это то, что у меня сейчас есть:
AuthController.php
public function logout()
{
$accessToken = auth()->user()->token();
$refreshToken = DB::table('oauth_refresh_tokens')
->where('access_token_id', $accessToken->id)
->update([
'revoked' => true
]);
$accessToken->revoke();
return response()->json(['status' => 200]);
}
routes/api.php
:
Route::middleware('auth:api')->group(function () {
Route::post('/logout', 'API\AuthController@logout');
Route::get('/get-user', 'API\AuthController@getUser');
});
Прямо сейчас, это то, что я пытался сделать:
Layout.vue
methods: {
logout() {
axios.post('/api/logout').then(response => {
this.$router.push("/login")
}).catch(error => {
location.reload();
});
}
}
Который вызывает мою функцию выхода из системы в Auth.js
:
logout() {
localStorage.removeItem('token')
localStorage.removeItem('expiration')
}
Однако, когда пользователи нажимают на функцию выхода из системы, они не выходят из системы сразу (перенаправляются на страницу входа в систему) - они по-прежнему могут просматривать «только пользовательские страницы».
Мне нужно обновить страницу, прежде чем я выйду из системы.
Может ли кто-нибудь помочь мне с этим? Это даже правильный подход к «безопасной» функции выхода из системы?