laravel 5 ajax authentification

时间:2015-09-03 10:46:49

标签: ajax laravel login

我需要通过ajax从任何页面创建auth。如果我发送错误的登录和空传递(反之亦然) - 将返回json错误(它没问题)。如果我发错了登录和错误的通行证(或正确的登录和路径) - 将返回重定向。

如何更改后端获取响应json?

我的前端代码js:

$("#authform").submit(function(e) {
    e.preventDefault();

    $.post($(this).attr("action"), $(this).serialize(), function(data) {
        console.log(data);
    }, "json");
});

HTML:

<form id="authform" method="POST" action="{{ url('/auth/login') }}">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <input type="email" name="email" value="{{ old('email') }}">
    <input type="password" name="password">
    <input type="checkbox" name="remember">
    <button type="submit">Login</button>
</form>

routes.php文件:

Route::post('auth/login', 'Auth\AuthController@postLogin');

2 个答案:

答案 0 :(得分:0)

这不是答案。首先尝试这个,然后我们应该

$('#authform').on('submit',function(e) {
e.preventDefault();
$.ajax({
    type: 'POST',
    cache: false,
    dataType: 'JSON',
    url: $(#authform).attr("action"),
    data: $('#authform').serialize(),
    success: function(data) {
        console.log(data);
    },
});
return false;
});

您是否尝试过此链接How to create AJAX login with Laravel

答案 1 :(得分:0)

我确信这个问题有更好的解决方案,但我所做的是:

  1. 创建新的登录路线 Route::post('/login', 'Auth\AuthController@signIn');
  2. App\Http\Controllers\Auth\AuthController中,我添加了两个新方法:

    public function signIn(Request $request) {
        $this->validateLogin($request);
    
        $throttles = $this->isUsingThrottlesLoginsTrait();
    
        if ($throttles && $lockedOut = $this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);
    
            return $this->sendLockoutResponse($request);
        }
    
        $credentials = $this->getCredentials($request);
    
        if (Auth::guard($this->getGuard())->attempt($credentials, $request->has('remember'))) {
            return $this->handleUserWasAuthenticated($request, $throttles);
        }
    
        if ($throttles && ! $lockedOut) {
            $this->incrementLoginAttempts($request);
        }
    
        return $this->sendFailedLoginResponseJSON($request);
    }
    
  3.     protected function sendFailedLoginResponseJSON(Request $request)
        {
           return response()->json(['username' => $this->getFailedLoginMessage()], 422);
        }
    

    它与AuthenticatesAndRegistersUsers特征的登录方法基本相同,除了最后一行,登录方法使用

    protected function sendFailedLoginResponse(Request $request)
    {
        return redirect()->back()
            ->withInput($request->only($this->loginUsername(), 'remember'))
            ->withErrors([
                $this->loginUsername() => $this->getFailedLoginMessage(),
            ]);
    }
    

    发送带有错误的重定向。

    如果你想要ajax和非ajax,你可以做

            if($request->ajax()){
                return $this->sendFailedLoginResponseJSON($request);
            }
            return $this->sendFailedLoginResponse($request);
    

    在新登录方法中。