[英]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.