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

Laravel Ajax登录,成功后重定向到上一个url

假设我有一个使用auth中间件的页面A.由于没有登录,它会被重定向登录页面.

登录页面上,我有自定义ajax登录系统.在成功登录时,我想使用相同的URL重定向页面A,以便可以完成操作.

我的登录代码是这样的:

public function postLogin(Request $request)
{

    $auth = false;
    $errors = [];

    $inputs = $request->all();
    $validator = $this->validator($inputs);

    if ($validator->fails()) {
        return response()->json([
            'auth' => false,'intended' => URL::prevIoUs(),'errors' => $validator->errors()
        ]);
    }

    $user = User::where('email',$request->get('email'))->first();

    if ($user && $user->is_active == 0) {
        $errors[] = "This account has been deactivated";
    } else if ($user && $user->confirm_token != null) {
        $errors[] = "Please verify your email in order to login";
    } else {

        $credentials = ['email' => $request->get('email'),'password' => $request->get('password'),'is_active' => 1];

        if (Auth::attempt($credentials,$request->has('remember'))) {
            $auth = true;
        } else {
            $errors[] = "Email/Password combination not correct";
        }

    }

    if ($request->ajax()) {          
        return response()->json([
            'auth' => $auth,'errors' => $errors
        ]);
    }

    return redirect()->intended(URL::route('dashboard'));

}

我试图通过url() – > prevIoUs()获取以前的url,但它返回登录页面url.请有人指导我.任何改进/帮助将不胜感激.

我正在使用Laravel 5.4

在这里一个非常类似的问题: Ajax Auth redirect on Laravel 5.6

正如@aimme(https://stackoverflow.com/users/1409707/aimme)所指出的,Ajax调用是无状态的,所以基本上你不能与后端进行交互.

他的建议和我的建议是将URL转移到要重定向到的目标页面,或者在您的情况下可以通过post参数传递给它,例如:

return response()->json([
    'auth' => false,'intended' => $request->intended,'errors' => $validator->errors()
]);

原文地址:https://www.jb51.cc/ajax/159903.html

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

相关推荐