laravel - Auth::attempt 值始终为 false
问题描述
我想登录时遇到了一些问题,我Auth::attempt
总是遇到错误值的问题,我的代码是否有问题?
控制器 :
public function register(Request $register)
{
$validator = Validator::make($register->all(), [
'name' => 'required',
'email' => 'required|email',
'password' => 'required',
]);
if ($validator->fails()) {
return response()->json(['error' => $validator->errors()], 401);
} else {
$name = $register->input('name');
$email = $register->input('email');
$pwd = $register->input('password');
$c_pwd = $register->input('c_password');
// Crypting password & c_password to md5
$md5_pwd = md5($pwd);
$md5_c_pwd = md5($c_pwd);
// Salt password & c_password
$password = crypt($md5_pwd, "asd");
$c_password = crypt($md5_c_pwd, "asd");
$data = new User();
if ($password == $c_password) {
$user = User::create([
'name' => $name,
'email' => $email,
'password' => $password,
]);
$success['token'] = $user->createToken('SSOApp')->accessToken;
return response()->json([
'success' => true,
'token' => $success,
'user' => $user
]);
} else {
return response()->json(['error' => "Password doesn't match"], 401);
}
}
}
public function login()
{
$email = request('email');
$pwd = request('password');
$md5 = md5($pwd);
$password = crypt($md5, "asd");
if (Auth::attempt(['email' => $email, 'password' => $password])) {
$user = Auth::user();
$success['token'] = $user->createToken('SSOApp')->accessToken;
return response()->json([
'success' => true,
'token' => $success,
'user' => $user
]);
} else {
return response()->json([
'success' => false,
'message' => 'Invalid Email or Password',
], 401);
}
}
解决方案
Laravel Auth 在通过模型保存密码时使用 bcrypt 哈希,您可以使用两种方法中的任何一种
$account->password = bcrypt("YOUR_PASSWORD");
或者$account->password = Hash::make("YOUR_PASSWORD");
然后,如果您正在处理身份验证尝试功能,只需简单地调用这样的方法
if($account = Auth::attemp(['email' => "YOUR_EMAIL@DOMAIN.COM", 'password' => "YOUR_PASSWORD"])){
//success login, do your extra job here
}else{
//invalid credentials here
}
推荐阅读
- php - 使用 PHPUnit 7 测试旧的 PHP 版本
- c++ - ZMQ 套接字连接超时
- html - 如何解决并排放置 div 的移动问题?
- python - 使用 numpy 声明新的数学函数
- asp.net - OnClick 方法在第一次单击时未触发
- python - 设置 pythonpath 的 Bash 脚本
- flask - 如何将 Keycloak 与 Flask REST API 服务一起使用
- java - 获取 javax.xml.soap.SOAPException:通过 Java 调用 Web 服务时在 Oracle WebLogic 服务器上未指定 Content-Type 错误
- python - 如何预测弹丸运动?
- c - C99:fscanf() 比 fgetc() 更早设置 eof 是标准的吗?