vue.js 使用Laravel API从SPA注销

wkftcu5l  于 2023-02-24  发布在  Vue.js
关注(0)|答案(1)|浏览(157)

我有两个应用程序:SPA使用Vuejs 3构建,API使用Laravel构建。SPA在127.0.0.1:5173上运行,API在127.0.0.1:8000上运行。用户可以成功进行身份验证,但我想注销,它不起作用,用户保持身份验证,未抛出任何错误
注销功能:

public function logout(Request $request)
    {
        if(method_exists(auth()->user()->currentAccessToken(), 'delete')) {
            $request->user()->currentAccessToken()->delete();
        }
        Auth::guard('web')->logout();
        $request->session()->invalidate();
        $request->session()->regenerateToken();
        return response()->json([
            'success' => true,
        ]);
    }

axios请求:

logout() {
          return new Promise((resolve, reject) => {
            axios
              .post('/api/v1/auth/logout')
              .then((response) => {
                resolve(response)
              })

注销途径:

//api.php
Route::prefix('/v1')->group(function () {
    Route::group(['prefix' => 'auth'], function () {
        Route::post('logout', [AuthController::class, 'logout'])->middleware('auth:sanctum');
    }); 
.....
vsdwdz23

vsdwdz231#

如果您正在使用sancutum作为API,则可以执行类似以下的操作来注销用户

use Illuminate\Support\Facades\Auth;

    function logoutout(Request $request)
    {
        $request->user()->tokens()->delete(); //to delete the token
        Auth::logout(); //to logout your web
        return response()->json([
            'success' => true,
        ]);
    }

相关问题