2016-10-13 2 views
0

При использовании по умолчанию аутентификации лески из Laravel, при регистрации пароля хешируются с Bcrypt в RegisterController.php при создании функцииLaravel потока Войти

protected function create(array $data) 
{ 
    return User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 
} 

Я хотел бы знать, где это функция, хэш, введенный пользователя для пароля при входе в систему? Он должен быть где-то построен внутри папки поставщика, но я не могу его найти.

Поэтому, когда пользователь хочет войти в систему, он вводит пароль с открытым текстом, и этот простой текст снова получает хеширование с помощью bcrypt, а затем сравнивается с сохраненным и хэшированным паролем в БД. Но где это делает laravel? В какой функции?

ответ

2

Laravel никогда не расшифровывает пароль

Bcrypt пароли в Laravel никогда не расшифрованы, пароль, введенный пользователем, просто получает по сравнению с уже хэшированного пароль хранится в базе данных.

Update:

Если вы используете аутентификацию пользователя Eloquents модели;

поставщика/Laravel/рамки/SRC/Осветите/Auth/EloquentUserProvider.php

public function validateCredentials(UserContract $user, array $credentials) 
{ 
    $plain = $credentials['password']; 
    return $this->hasher->check($plain, $user->getAuthPassword()); 
} 

Если вы аутентичности драйвер базы данных;

поставщика/Laravel/рамки // SRC/Осветите/Auth/DatabaseUserProvider.php

public function validateCredentials(UserContract $user, array $credentials) 
{ 
    $plain = $credentials['password']; 
    return $this->hasher->check($plain, $user->getAuthPassword()); 
} 
+0

@ lewis4u Это еще не зашифровано. Это 'hashed', есть большая разница. – Ohgodwhy

+0

OK давайте начнем снова .... пароль пользователей хэшируется в регистре и сохраняется так же в БД ... тогда при входе пользователь пишет пароль в форме входа и что то, что он написал в поле пароля, снова получает хеширование с помощью bcrypt и сравнивается с паролем в DB .... и эта функция, которую я хочу видеть! – lewis4u

+0

Да, это то, что происходит, и посмотрите мое обновление. Он покажет вам логику после вспомогательной функции bcrypt() в laravel. –

0

bcrypt - это функция, которая превращает ее в хэш. Это односторонний хеш-алгоритм и не может быть расшифрован. Пароль, который пользователь отправляет в обычном тексте, конвертирует его с помощью bcrypt, а затем сравнивает в db.

+0

ОК, но вы можете помочь мне найти, где функция потока Войти – lewis4u

+0

Я нашел несколько возможных мест: Осветить \ Foundation \ Auth \ AuthenticatesUsers; – lewis4u

+0

Пожалуйста, укажите название функции и версию Laravel. –