본문 바로가기

Laravel Blog

[Back] Laravel Middleware - Auth (1)

반응형

안녕하세요, 주갬입니다.

오늘은 Laravel의 미들웨어에 대해  Auth를 중심으로 설명드리려고 합니다.

 

사실 미들웨어는 Laravel에서만의 기능은 아니고 굉장히 보편적으로 쓰이는 기능입니다.

 

 

Redhat의 공식문서에서는 미들웨어를 다음과 같이 설명하고 있습니다.

미들웨어 공통 서비스 및 기능을 애플리케이션에 제공하는 소프트웨어입니다. 데이터 관리, 애플리케이션 서비스, 메시징, 인증 및 API 관리는 주로 미들웨어를 통해 처리됩니다. 
미들웨어는 개발자들이 애플리케이션을 보다 효율적으로 구축할 수 있도록 지원하며 애플리케이션, 데이터 및 사용자 사이를 연결하는 요소처럼 작동합니다.

https://www.redhat.com/ko/topics/middleware/what-is-middleware

 

미들웨어(Middleware): 개념, 종류, 비교, 구성 요소, 툴, 장점

미들웨어란 서비스 및 기능을 애플리케이션에 제공하는 소프트웨어입니다. 데이터, 애플리케이션 서비스, 메시징, 인증 및 API를 관리합니다. 종류와 툴을 비교해 보세요.

www.redhat.com

 

 

설명만 보면 약간 복잡해보이는데요, 라라벨에서는 이를 쉽게 구현할 수 있도록 미들웨어 기능을 지원하고 있습니다. 

미들웨어에 대한 설명을 간단히 드린 후 미들웨어의 생성과 등록,적용까지 지금부터 차근차근 설명드리도록 하겠습니다.

 


미들웨어를 적용하는 두가지 방법

 

라라벨 미들웨어는 1. 라우팅에서 적용하는 방법2. 컨트롤러에서 적용하는 방법 으로 두가지 방법이 존재합니다.

 

 

1.라우팅에서 적용하는 방법

/*
로그인 & 회원가입 관련 라우팅
*/
Route::namespace('auth')->group(function () {
  Route::post('/login',[LoginController::class, 'process_login'])
  -> name('login');

  Route::get('/register', [RegisterController::class, 'show_register_form']);
  Route::post('/register', [RegisterController::class, 'process_register']);

  Route::get('/logout',[LoginController::class, 'logout']);
});

제가 작성한 인증 관련 라우팅 입니다. 인증 관련한 라우팅들을 그룹으로 묶고 auth 미들웨어를 적용시켰습니다.

이렇게 적용을 하게 되면 그룹에 속해있는 모든 라우팅들이 auth미들웨어를 거쳐 작동하게 됩니다.

 

만약 auth미들웨어에서 로그인 안된 사용자의 접근을 제한했다면

/login, /register, /logout 에 로그인 되지 않은 상태로 접근했을 때 지정한 방법대로(원래 페이지로 리다이렉트 등등,,) 접근을 제한시킵니다.

 

2. 컨트롤러에서 적용하는 방법

class PostController extends Controller 
{
	public function __construct() 
    {
    	$this -> middleware('auth');
        
        $this -> middleware('admin')
        	  -> only('editUsers');
              
        $this -> middleware('guest')
        	  -> except('editUsers');
     }
 }

컨트롤러에서 미들웨어를 추가하기 위해서는 컨트롤러의 생성자에서 middleware 메서드를 호출해야 합니다.

추가적으로 only와 except 메서드를 사용하면 미들웨어를 적용할 범위를 지정할 수 있습니다.

 

위의 예시에서는 admin 미들웨어를 editUser일때만 적용하고, guest 미들웨어는 editUser에게 적용하지 않네요.

editUser는 유저를 편집할 권한이 있는 admin을 위한 라우트이기 때문에 admin 미들웨어만 적용할 것임을 확인할 수 있습니다.

 


다음 시간에는 미들웨어를 생성하는 방법에 대해 말씀 드리도록 하겠습니다.

반응형