Laravel单页面应用想让RegisterController返回json,而不是直接页面跳转,如何处理?

我现在的项目是使用laravel和reactjs来做单页面应用,但是登录和注册 都是使用make:auth自动生成 的,登录成功之后就直接跳转页面了,而我是通过axios提交的,所以想说的是怎么让它返回json而不是页面跳转,登录失败也是哦。

阅读 2.7k
2 个回答

AuthenticatesUserstrait里面有个authenticated方法,在LoginController里面重写这个方法即可

 /**
     * The user has been authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        //
    }

例如:

/**
     * The user has been authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        return response()->json([
            'msg' => '登录成功'
        ]);
    }

登录失败则重写sendFailedLoginResponse方法

/**
     * Get the failed login response instance.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\RedirectResponse
     */
    protected function sendFailedLoginResponse(Request $request)
    {
        throw ValidationException::withMessages([
            $this->username() => [trans('auth.failed')],
        ]);
    }

如:

/**
     * Get the failed login response instance.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\RedirectResponse
     */
    protected function sendFailedLoginResponse(Request $request)
    {
        return response->json([
            'msg‘ => '登录失败'
        ])->setStatusCode(500);
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题