验证::尝试[Laravel]不能很好地工作,,它总是返回false [英] Auth::attempt [Laravel] doesn't work well,, It's always return false
问题描述
每一次我尝试测试我的TESTLOGIN功能时它返回false,我的投入是否uncorrect [不存储在数据库]或不正确[存储在我的数据库] ...
auth.phph正确的,['模型'=>'用户'和配置的;&安培; '表'=>'用户']
下面请任何帮助:)
公共职能TESTLOGIN()
{
$数据=输入::所有(); //获取与POST请求输入
$ UNameOrEmail = $数据['UnameOrEmail'];
$密码= $数据['密码']; 如果(filter_var($ UNameOrEmail,FILTER_VALIDATE_EMAIL)){//检查输入电子邮件或其他(再考虑它作为用户名) $验证=验证::使(//验证用于电子邮件
阵列(
电子邮件=> $ UNameOrEmail,
'密码'=> $的密码,
)
阵列(
电子邮件=> 需要|电子邮件|存在:用户,电子邮件',
'密码'=> 需要|分:8'
)
); 如果(用$ validator->失败()){//如果电子邮件验证是错误的返回验证消息
$消息=用$ validator->的消息();
返回$消息;
}
其他还有//商店电子邮件和放大器;密码阵列
$ USER =阵列(
电子邮件=> $ UNameOrEmail,
'密码'=>哈希::彩妆($密码)
); } 其他{
$验证=验证::彩妆(//检查用户名验证
阵列(
'USER_NAME'=> $ UNameOrEmail,
'密码'=> $的密码,
)
阵列(
'密码'=> 需要|分:8',
'USER_NAME'=> 需要| alpha_dash |之间:4,16
)
); 如果(用$ validator->失败()){//如果用户名验证是错误的返回验证消息
$消息=用$ validator->的消息();
返回$消息;
}其他
$ USER =阵列(//别的店用户名和放大器;密码阵列
'USER_NAME'=> $ UNameOrEmail,
'密码'=>哈希::彩妆($密码)
); }
如果(AUTH ::尝试($用户)){//这是错误 回声成功登录;
}
其他
{
呼应有些东西出问题; //在任何情况下,它JUM这里:(
}}
您不能将它传递给验证::尝试
前散列密码。只需通过简单的密码:
$ USER =阵列(
'USER_NAME'=> $ UNameOrEmail,
'密码'=> $密码
);
另外,还要确保您存储密码的哈希数据库和密码字段的 60个字符。否则,哈希将被截断,这是行不通的。
every time I try to Test my TestLogin function it return false, whether my inputs were uncorrect[not stored in DataBase] or correct [that stored in my DataBase] ...
config of auth.phph correct that [ 'model' => 'User'&& 'table' => 'users']
Please any help here :)
public function TestLogin() {
$data = Input::All(); //Get Input with POST Request
$UNameOrEmail = $data['UnameOrEmail'];
$password = $data['Password'];
if(filter_var($UNameOrEmail, FILTER_VALIDATE_EMAIL)) { //Check if Input Is Email or else(then consider it as user name)
$validator = Validator::make( //Validation for Email
array(
'email' => $UNameOrEmail,
'password' => $password,
),
array(
'email' => 'required|email|exists:users,email',
'password' => 'required|min:8'
)
);
if ($validator->fails()) { //If Email Validation was wrong return validation message
$messages = $validator->messages();
return $messages;
}
else //else store Email&Password in Array
$user = array(
'email' => $UNameOrEmail,
'password' => Hash::make($password)
);
}
else {
$validator = Validator::make( //Check User Name Validation
array(
'user_name' => $UNameOrEmail,
'password' => $password,
),
array(
'password' => 'required|min:8',
'user_name' => 'required|alpha_dash|between:4,16'
)
);
if ($validator->fails()) { //If User Name Validation was wrong return validation message
$messages = $validator->messages();
return $messages;
} else
$user = array( //else store UserName&Password in Array
'user_name' => $UNameOrEmail,
'password' => Hash::make($password)
);
}
if (Auth::attempt($user)) { //Here's the Error
echo 'Successfully logged in';
}
else
{
echo 'Some thing go wrong'; //In any case it jum here :(
}
}
You must not hash the password before passing it to Auth::attempt
. Just pass the plain password:
$user = array(
'user_name' => $UNameOrEmail,
'password' => $password
);
Also make sure that you store a hash of the password in the database and the password field is 60 characters long. Otherwise the hash will be truncated and it won't work.
这篇关于验证::尝试[Laravel]不能很好地工作,,它总是返回false的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!