微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Laravel 8 网络路线守卫与 Laravel 护照

我有一个 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?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。