каждый раз, когда я пытаюсь проверить мою функцию TestLogin, она возвращает false, независимо от того, были ли мои входные данные неправильными [не сохранены в базе данных] или правильными [которые хранятся в моей базе данных] …
конфиг auth.phph исправить что [‘model’ => ‘User’&& ‘table’ => ‘users’]
Пожалуйста, помогите здесь 🙂
публичная функция 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 :(
}
}
Вы не должны хешировать пароль перед его передачей Auth::attempt
, Просто передайте простой пароль:
$user = array(
'user_name' => $UNameOrEmail,
'password' => $password
);
Также убедитесь, что вы храните хэш пароля в базе данных и поле пароля Длина 60 символов. В противном случае хеш будет урезан и не будет работать.
Я вижу, что вы используете Input :: All () (заглавная A) вместо Input::all()
,
Сделать dd(Input::All());
чтобы увидеть, что он возвращает.
Нашел проблему (думаю): ты должен НЕ Хэш-пароль, так как Auth делает это автоматически. Короче говоря, вы хэшируете его вручную, а затем Auth хэширует его снова, и поэтому пароль никогда не совпадает с тем, что хранится в таблице БД 🙂