인증
로그인/사용자정보 관리
Auth::user();승인된 유저
Auth::id();승인된유저아이디
Auth::check(); 사용자가 인증되어있는지 확인
Auth::logout();로그아웃
Auth::user();와 Auth()->user();는 같다 auth()를 사용가능
$request->user() 승인된 유저가있으면 request로부터 유저정보 취득가능
라우트 미들웨어를 사용해서 인증된 사용자 관리
app/Http/Kernel.php파일안에 auth의 미들웨어가 등록되어있고 구현 클래스는 Authenticate.php이다
Route::get('/flights', function () {...})->middleware('auth');
Authenticate.php에서 인증되지않은 유저인 경우 리다이렉팅 처리를 할수있다
수동으로 로그인 구현가능
컨트롤러등에 아래 처럼 구현하면 데이터베이스에서 자동으로 찾아서 인증처리를 해준다
Auth::attempt(['email' => $email, 'password' => $password],<로그인기억여부>)
인스턴스로 인증 (모델에서 Authenticatable구현필요)
Auth::login($user);
사용자정의 guard추가법
Auth::guard('custom')->attemptCustomMethod(...) 이와 같은 사용자 정의 함수를 가진 guard를 추가할수있다
즉 Auth::를 좀 더 내 입맛대로 사용가능하게 만들수있다는것
인가
권한
bootstrap시 실행되는 프로바이더 AuthServiceProvider.php의 boot메서드 안에 Gate퍼사드를 이용해서 구현함
// 관리자 권한 확인
Gate::define('is-admin', function (User $user) {
return $user->email === config('app.admin_mail');
});
// 사용시
Gate::allows('is-admin') allow말고 다른 함수도 많다
// 권한 확인후 false일경우 403에러를 반환하는 함수
Gate::authorize('is-admin');
현재는 User모델에 관리자권한 칼럼을 추가한 후 아래와 같이 처리
// 관리자 권한 확인
Gate::define('is-admin', function (User $user) {
return $user->is_admin;
});
참조
https://laravel.kr/docs/9.x/authentication#retrieving-the-authenticated-user