Laravel - 注销路线是否公开

标签 laravel single-page-application logout laravel-sanctum

我想使用 laravel\sanctum 进行 SPA 身份验证,其中 Laravel 是后端 api,Vue 是前端 SPA。我做了所有手册上的说明,但我遇到了问题:
当我在 api.php

中注销路由时
Route::post('/logout', [AuthController::class, 'logout'])

位于中间件('auth:sanctum')下,由于错误,我无法注销用户:

Method Illuminate\Auth\RequestGuard::logout does not exist.    

注销功能在哪里:

Auth::logout();

但是当我删除中间件('auth:sanctum')时 - 注销功能运行良好并且用户注销。
问题是:注销路由是否应该受到保护

补充:对于那些想说:使用 Auth::logout('web') - 它不起作用,因为用户保持登录状态。

最佳答案

您必须显式使用防护。 使用您的自定义防护更改网络:

Auth::guard('web')->logout();

关于Laravel - 注销路线是否公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64961923/

相关文章:

java - 您如何在 spring-security 中注销所有已登录的用户?

php - 使用分形变换 Eloquent 模型

php - 如何在 Laravel 的控制台上打印消息?

php - Laravel 中的日期本地化

laravel - 在 laravel 5.2 中无法使用自定义 HTTP 错误页面

php - 带有 Vuejs 的 Laravel 7.x Sanctum (SPA) 总是返回 401 Unauthorized

amazon-web-services - 在 S3 + Cloudfront 上以相同的 URL 托管多个 SPA Web 应用程序

javascript - 没有 hashbang 的动态 Web 应用程序 #!

java - Facebook Android SDK 注销不起作用

c# - Blazor WebAssembly 应用程序/身份验证/注销导致 "There was an error trying to log you out: ' '"失败