繁体   English   中英

Laravel Auth :: login无法处理AJAX请求

[英]Laravel Auth::login not working on AJAX request

我是Laravel的新手,我正在创建一个登录表单,该表单将通过Ajax进行验证。 现在的问题是,当我使用Auth :: login($ user)时,似乎在通过电子邮件和密码验证后未登录该用户。 检查下面的代码。

JS

$('#loginform').on('submit', function(event){
    var token = $('#loginform input[name="_token"]').val();
    var email = $.trim($('#loginform #email').val());
    var password = $.trim($('#loginform #password').val());
    $.post("/checklogin",
    {
    _token: token,
    email: email,
    password: password,
    },
    function(data){
      if( data == "success" ){
        window.location.reload();
      } else {
        $('#loginform .error').text(data);
      }
    });
    event.preventDefault();
});

CheckLoginController

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests;
use App\User as User;
use Hash;

class CheckLoginController extends Controller
{
    public function check(Request $request)
    {
        if( $request->ajax() ) :
            $user = User::where('email', '=', $_POST['email'])->first();
            if( $user ) :
                //check password
                if( Hash::check($_POST['password'], $user->password) ) :
                    Auth::login($user);
                    echo "success";
                else :
                    echo "Invalid username/password";
                endif;
            endif;
        endif;
    }   
}

有人请帮忙。

我认为最好使用attempt功能来检查电子邮件和密码。 也使用laravel Request获取输入

if ($request->ajax()) {
    if (Auth::attempt(['email' => $request->input('email'), 'password' =>  $request->input('password')])) {
        // Authentication passed...
        return 'success';
    }
    else {
        return 'Invalid username/password';
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM