## Содержание - [Соль и Хэш](#hash) - [Вход](#login) - [Защита маршрутов](#filter) - [Запросы к залогиненной User модели](#user) - [Выход](#logout) - [Создание пользовательского драйвера](#drivers) > **Примечание:** Перед использованием класса Auth вы должны определить [определить драйвер сессии](/docs/v3/session/config). ## Соль и Хэш При использовании класса **Auth** настоятельно рекомендуется хэшировать и "присаливать" (добавлять соль) все пароли. К веб-разработке нужно подходить ответственно. "Присоленые", захэшированные пароли сделают попытки взлома при помощи радужных таблиц просто нецелесообразными. "Присоленые" и захэшированные пароли получаются при использовании класса **Hash**. Класс Hash использует алгоритм хэширования **bcrypt**. Пример: $password = Hash::make('secret'); Метод **make** класса Hash вернет хэш-строку из 60 символов. Вы можете сравнить нехэшированное значение с хэшированным, используя метод **check** Hash класса: if (Hash::check('secret', $hashed_value)) { return 'The password is valid!'; } ## Вход Вход пользователя в приложение прост посредством метода **attempt** класса Auth. Просто вставьте имя и пароль в метод. Оба этих параметра должны находиться во входном массиве, что позволяет обеспечить максимальную гибкость драйвера, так как некоторые драйверы могут потребовать разное количество аргументов. Метод входа вернет **true** в случае подтверждения полномочий, или **false** в противном случае: $credentials = array('username' => 'example@gmail.com', 'password' => 'secret'); if (Auth::attempt($credentials)) { return Redirect::to('user/profile'); } Если полномочия подтверждены, ID пользователя будет сохранено в сессии и ему будет присвоен статус "logged in" для последующих запросов к приложению. Для определения того, что пользователь вошел и имеет статус "logged in", используется метод **check**: if (Auth::check()) { return "You're logged in!"; } Используйте метод **login** для входа пользователя без подтверждения полномочий, например, после входа пользователя, когда он первый раз зарегистрировался в приложении. Просто вставьте объект пользователя или его ID: Auth::login($user); Auth::login(15); ## Защита маршрутов Она является общей для ограничения доступа к определенным маршрутам только для зарегистрированных пользователей. В Laravel это достигается использованием [фильтров авторизации](/docs/v3/routing#filters). Если пользователь залогинен, запрос проходит нормально, в противном случае, если пользователь не авторизован, он будет переадресован на страницу авторизации ("login") [именные маршруты](/docs/v3/routing#named-routes). Для защиты маршрута, просто добавьте фильтр **auth**: Route::get('admin', array('before' => 'auth', function() {})); > **Примечание:** Вы вольны запрограммировать фильтр **auth** как вам будет угодно. Реализацию по умолчанию вы можете найти в **application/routes.php**. ## Запросы к залогиненной User модели Пока пользователь залогинен в приложении, вы можете получить доступ к пользовательской модели при помощи метода **user** класса Auth: return Auth::user()->email; > **Примечание:** Если пользователь не залогинен, метод **user** вернет NULL. ## Выход Готовы к выходу из приложения? Auth::logout(); Этот метод удалит ID пользователя из сессии, и пользователь уже не будет считаться авторизованным для последующих запросов к вашему приложению.