Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 14.04.2018 18:56:15

Хеш пароля

Подскажите, где идет проверка пароля в стандартной авторизации? все изрыл, ни как не найду.

Не в сети

#2 15.04.2018 10:01:50

Re: Хеш пароля

Чтобы находить надо исполдьзовать правильные слова smile
Аутентификации, а не авторизации. Проверка пароля это "аутентификация", а "авторизация" это проверка прав доступа к чему-либо когда пользователь уже определён.

https://laravel.com/docs/5.6/authentica … quickstart

В Laravel аутентификация связана с понятием "guard" - защита/охранник. Защитники описываются в файле конфигурации config/auth. А вот так происходит собственно проверка пароля в контроллере LoginController:

      $credentials = $request->only('email', 'password');

        if (Auth::attempt($credentials)) {
            // Authentication passed...
            return redirect()->intended('dashboard');
        }

Auth::attempt(...) это короткий вариант Auth::guard('default guard name')->attempt(...)

Ты можешь использовать своего альтернативного "защитника" или даже несколько разных для разных частей приложения. Например заказчики отдельно, админы отдельно. Тема большая, начни свои исследования с офф. документации и guard. Когда ухватишь картину в-целом, спрашивай детали реализации.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 17.04.2018 11:34:09

Re: Хеш пароля

PHP
namespace App\Http\Controllers\Auth;

use 
App\Http\Controllers\Controller;
use 
Illuminate\Foundation\Auth\AuthenticatesUsers;

class 
LoginController extends Controller
{

    use 
AuthenticatesUsers;

    protected 
$redirectTo '/';

    public function 
__construct()
    {
        
$this->middleware('guest')->except('logout');
    }
}

Где тут проверка пароля? тут же нет ничего. Я нашел уже что хотел, но в другом файле.

Не в сети

#4 17.04.2018 13:50:38

Re: Хеш пароля

Где тут проверка пароля? тут же нет ничего.

Вот же оно всё smile

use AuthenticatesUsers;

Это трейт. Использовать трейт это всё равно что скопировать его методы в тело класса. Так что всё, что я написал выше остаётся в силе. На деле там больше букв, но в итоге работает именно так как написано в доке и как я тебе процитировал: защитник->attempt(поля из запроса).


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#5 17.04.2018 13:58:40

Re: Хеш пароля

Подсказка:
Чтобы перекрыть действие трейта, ты можешь объявить свой метод в теле LoginController с тем же именем. Например объяви свой метод login. Только повтори в точности все параметры.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела