我有一个 laravel-vuejs 混合项目并应用了 laravel/passport
。
我的 web.php route
由 laravel'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?