Laravel 8 网络路线守卫与 Laravel 护照

时间:2021-01-30 03:46:05

标签: laravel laravel-routing laravel-passport laravel-8 laravel-vue

我有一个 laravel-vuejs 混合项目并应用了 laravel/passport

我的 web.php routelaravel's own session(Auth::user()) 守护,而我的 api.php route 由 laravel 护照守护。

现在我想要的是在成功调用 newsfeed api 后重定向到 login 路由。

我在 AuthController 中的 login 函数是:

$validator = Validator::make($request->all(), [
        'email' => 'email|required',
        'password' => 'required'
    ]);

    if ($validator->fails()) {

        return response()->json([
            'status' => 0,
            'msg' => $validator->errors()->all(), //get error for all fields
            'data' => [],
            'token' => ''
        ], 200);

    } else {

        $loginData = [
            'email' => $request->email,
            'password' => $request->password
        ];

        if ( !auth()->attempt($loginData) ) {

            return response()->json([
                'status' => 0,
                'msg' => 'Invalid credentials.',
                'data' => [],
                'token' => ''
            ], 200);

        } else {

            $user = auth()->user();

            $accessToken = $user->createToken($user->email.'-'.now())->accessToken;

            return response()->json([
                'status' => 1,
                'msg' => 'ok',
                'data' => $user,
                'token' => $accessToken
            ], 200);

        }

    }

我的 web.php 路线是:

Route::middleware(['auth:web'])->group(function ($router) {

    Route::get('/newsfeed', [NewsfeedController::class, 'feed'])->name('newsfeed');
    ...
    ...
});

在收到 login api 函数后,在我调用 login 函数的 Vue 中,假设响应 status 返回 1,我调用了 window.location.href = '/newsfeed';

问题是,我无法继续执行 /newsfeed 路线,因为尚未进行 Laravel 会话,而且我在使用护照时不知道该怎么做。

我的问题是,如何通过某种身份验证保护我的 web.php routes?是laravel自己的session还是passport session?

0 个答案:

没有答案