Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Не в сети
Чтобы находить надо исполдьзовать правильные слова
Аутентификации, а не авторизации. Проверка пароля это "аутентификация", а "авторизация" это проверка прав доступа к чему-либо когда пользователь уже определён.
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.
Не в сети
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');
}
}
Где тут проверка пароля? тут же нет ничего. Я нашел уже что хотел, но в другом файле.
Не в сети
Где тут проверка пароля? тут же нет ничего.
Вот же оно всё
use AuthenticatesUsers;
Это трейт. Использовать трейт это всё равно что скопировать его методы в тело класса. Так что всё, что я написал выше остаётся в силе. На деле там больше букв, но в итоге работает именно так как написано в доке и как я тебе процитировал: защитник->attempt(поля из запроса).
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Подсказка:
Чтобы перекрыть действие трейта, ты можешь объявить свой метод в теле LoginController с тем же именем. Например объяви свой метод login. Только повтори в точности все параметры.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1