목록게임 (69)
센로그
◆ Custom Middleware 미들웨어 커스터마이징하는 법!! 우선 미들웨어의 특성을 살짝 복습해보자 요청 및 응답을 처리하는 부품 매 요청시마다 항상 실행되어야 할 로직에 사용함 양방향에서 처리됨 미들웨어가 Response를 직접 생성하면, ShortCut 역할을 한다. 아래로 계속 보내는 게 아니라, 흐름을 가로채서 끊어내는 것 이런 특성들에 대해 조금 더 자세히 알아보고자 한다. 우리가 미들웨어를 직접 만들어서 사용하고 싶을 수 있다. 이때 다음 방법들을 사용해 미들웨어를 구성할 수 있다. Run 이용 항상 흐름을 종료(shortcut)시킨다. (터미널 미들웨어) Map 이용 Branching 미들웨어 모든 미들웨어가 항상 순차적으로 실행되어야 하는 것은 아니다. 흐름을 가로챘다고 해서 꼭 위..
◆ Logging 로깅은 언제 해야 하느냐? 버그를 찾을 때. 서버에서는 로깅이 특히 중요하다. 중단점으로는 디버깅하기 어려운 경우가 많기 때문 ASP.NET Core에서는 어떻게 로깅할까? 기본적으로 ILogger라는 로깅 클래스를 제공한다. ILogger : 로깅을 하는 주체 ILoggerProvider : 어디에 로깅할지 ConsoleLoggerProvider FileLoggerProvider ... Program.cs의 builder을 통해 로깅 기능을 설정할 수 있다. 얘를 실제로 사용하기 위해서는 DI를 이용해 ILogger을 주입해주면 되는데, MVC 기본 플젝에서는 홈컨트롤러가 기본적으로 ILogger _logger 을 갖고있다. 따라서 아주 간단하게는 이런식으로 로깅해주면 된다. (Hom..
◆ Authorization authorization은 권한과 관련된 문제이다. 인증을 통과한 사용자라고 하더라도 사용자마다 허용된 권한은 다를 수 있다. ASP.NET Core에서 권한 관련 작업은 필터를 통해 처리된다. 요청 처리 과정 속에서 보면, 다음 시점(4.1)에서 처리된다. Request Routing Authentication 미들웨어 (인증) MVC 미들웨어 Authorize 필터 적용 Action View Authorization시 사용하는 애트리뷰트는 다음과 같다. [Authorize] 권한이 있는 경우에만 해당 액션 또는 컨트롤러를 사용 가능하도록 함 [AllowAnonymous] 필터 특성상, 적용 범위를 세부적으로 설정할 수 있다. (Global, Controller, Actio..
◆ Authentication 인증과 관련된 이야기를 해보자. 우선 Authentication과 Authroization을 구분해야 한다. 인증 vs 권한 Authentication(인증) ex) 가입한 유저인지 아닌지 인증 Authorization(권한) ex) 일반유저인지 운영자인지에 따른 권한 부여 ASP.NET Core 인증에서는 기본 용어 두가지가 등장한다 Principal: 사용자 Claim: 사용자(Principal)에 대한 세부 정보들 이메일, 이름, 생일, admin 권한 등 우리가 사용하고있는 ASP.NET Core 서버는 내부적으로 Kestrel로 구현되어있다. Kestrel 서버는 Request가 올 때마다 HttpContext를 생성해준다. 여기에 요청과 관련된 모든 정보들이 들어..
◆ Filter 미들웨어에 대해서는 알아봤었다. HTTP Request 및 Response를 처리하는 중간 부품이라고 했다. 근데 사실 이런 중간 부품으로 사용할 수 있는 파이프라인이 하나 더 있는데, 바로 필터 파이프라인이다. 필터링은 말그대로 무언가를 걸러주는 역할을 의미한다. 허가받는 특정 사람들만 액션에 접근할 수 있게 하는 것 로그인한 유저들에게만 보이도록 하는 것 필터가 없으면, 이런 코드를 모든 Action에 일일이 추가해야 했을 것임. nice한 기능인듯하다. 필터 사용 시점 그러면 필터는 어떤 시점에 추가할 수 있는걸까? 다음과 같이 작업들의 중간중간에 넣을 수 있다. Request Routing Filter Model Binding (+Validation) Filter Action Fi..
◆ Configuration 말 그대로 구성을 설정하는 부분이다. 코드 내부에다 그때그때 설정값을 적어놓는 게 아니라, 외부로 값을 빼서 설정을 관리하는 것을 의미한다. 여러곳에서 참조할 설정값들을 일괄 관리할 수 있다. (변경도 편함) 다양한 방법으로 Configuration을 관리할 수 있다. (순서대로 Configuration 적용) JSON file provider (appsettings.json) JSON file provider (appsettings.{ENV}.json) //현재 개발환경 UserSecretes //Development인 경우에만 Env Variable (환경변수) CommandLine 이 순서는 중요한데, 만약 겹치는 값이 있다면, 후순에 있는 값으로 덮어쓰도록 하기 때문이..