【问题标题】:laravel 5 ajax authentificationlaravel 5 ajax 认证
【发布时间】:2015-09-03 10:46:49
【问题描述】:

我需要通过 ajax 从任何页面创建身份验证。如果我发送错误的登录名和空通行证(反之亦然) - 将返回 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');

【问题讨论】:

  • 首先发布您的示例代码。这样我们就可以轻松地提供帮助......
  • 已添加。也许有ajax身份验证的例子?我没找到
  • 在您的控制器中使用response()-&gt;json(['data' : 'test']);。它将以 json 格式向客户端发送响应。

标签: ajax laravel login


【解决方案1】:

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

$('#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

【讨论】:

    【解决方案2】:

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

    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);
      }
      

        protected function sendFailedLoginResponseJSON(Request $request)
        {
           return response()->json(['username' => $this->getFailedLoginMessage()], 422);
        }
    

    AuthenticatesAndRegistersUsers trait 的登录方式基本相同,除了最后一行,登录方式使用

    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);
    

    在新的登录方法中。

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 1970-01-01
      • 2016-09-20
      • 2016-07-22
      • 2015-12-09
      • 1970-01-01
      • 2023-03-22
      • 2018-12-17
      • 2015-04-07
      相关资源
      最近更新 更多