0

我知道这个问题似乎是多余的,但我无法在任何地方找到解决方案。

laravel-vujs mix在同一个项目中使用并集成了 web 路由和 api 路由。

现在,我正在尝试创建一个名为的注册 api 函数registernative,其中它对用户进行身份验证并返回一些状态代码。

例如

public function registernative(Request $request) {
    $user = User::where('email', '=', $request->email)->first();

        $response = [];

        if(!$user) { //If user not exist, create

            try {

                $slug = strtolower($request->firstname) . '-' . strtolower($request->lastname) . '-' . time();

                $user = new User();
                $user->name = $request->firstname . ' ' . $request->lastname;
                $user->email = $request->email;
                $user->slug = $slug;
                $user->password = Hash::make($request->password);
                $user->save();

                Auth::login($user);

                $response = ['status'=>1, 'msg'=>'ok', 'data'=>$user->toArray()];

            } catch (Exception $e) {
                $response = ['status'=> -1, 'msg'=>'bad', 'data'=>[]];
            }

        } else { //If exist, login
            $response = ['status'=> 0, 'msg'=>'user already exist', 'data'=>[]];

        }


        return response()->json( $response );
}

现在在我的 vue 组件的注册函数中,我检查了status从 api 返回的,如果是1,我必须重定向到默认的仪表板页面。

默认页面inline-template是这样的(我不知道是否有必要提供它,但无论如何我都会提供它)。

@section('content')
    <defaultpage inline-template :user_session_details=" {{ Auth::user() }} ">
        <div>
            ...
            ...
            ...
        </div>

    </defaultpage>
@endsection

我尝试使用window.location.replace('http://localhost/defaultpage');,但它显示“未经身份验证”。

为什么Auth::login($user)保存后知道我它是未经身份验证的?

抱歉英语不好,不是母语人士。

4

1 回答 1

0

Sessions are not available in laravel api. To use sessions you can define your route in web routes or add \Illuminate\Session\Middleware\StartSession::class to api's middlewares in App/Http/Kernel.php

于 2021-01-27T15:49:22.310 回答