.net core 의 Authorization 필터 사용

머리말
우 리 는 전편 에서 필터 에 대한 간단 한 소 개 를 했 지만 어떻게 사용 하 는 지 는 소개 하지 않 았 다.다음 몇 편 은 제 가 어떻게 사용 하 는 지 말씀 드 리 겠 습 니 다.오늘 첫 편 은 Authorization 입 니 다.인증 필터,
개발 환경 소개
 개발 도구:VS 2019
개발 환경:.net core 3.1
1.항목 만 들 기
 
먼저 Api 프로젝트 를 만 들 고.net core 버 전 을 선택 하고 선택 하고 만 들 기 를 누 르 면 됩 니 다.
2 사용자 정의 클래스 만 들 기

public class AuthenticationTest: IAuthorizationFilter
{
 public void OnAuthorization(AuthorizationFilterContext context)
 {
  //    
 } 
}
IAuthorizationFilter 소스 코드 보기

IAuthorizationFilter 인 터 페 이 스 는 OnAuthorization 방법 이 하나 밖 에 없습니다.
클래스 를 만 들 고 IAuthorizationFilter 인 터 페 이 스 를 계승 한 다음 인터페이스 방법 을 실현 합 니 다.좀 궁금 하지 않 아 요?Authorization Filter Context 가 뭐 예요?
3 Authorization Filter Context 는 무엇 입 니까?
중국어 이해:권한 부여 필터 상하 문
6 대 속성:
  • ActionDescriptor:선택 한 동작 을 가 져 오 거나 설정 하 는 ActionDescriptor.(요청 한 메 서 드 가 져 오기)
  • Filters:적 용 된 IFilterMetadata 를 모두 가 져 옵 니 다.(요청 한 Action 이 AllowAnonymous 를 갖 추고 있 는 지 확인 할 수 있 으 며,있 으 면 AuthorizationFilter 여과 기 를 건 너 뛰 기)
  • HttpContext:현재 요청 한 HttpContext 를 가 져 오 거나 설정 합 니 다.(현재 요청 한 많은 정 보 를 가 져 옵 니 다.예 를 들 어 현재 사용자 정보,현재 요청 한 Heads[Head 에서 Token,즉 Token 검증 가능]
  • ModelState:모델 상태 사전 가 져 오기.MVC 프레임 워 크 를 사용 하여 Molde 를 검증 할 때 만 사용 할 수 있 습 니 다.모델 이 검증 되 었 는 지 확인 하 십시오
  • Result:요청 한 결 과 를 가 져 오 거나 설정 합 니 다.결 과 를 null 권한 부여 필터 의 비 값 으로 설정 하면 필터 파이프 의 나머지 부분 이 단락 됩 니 다
  • RouteData:현재 요청 한 RouteData 를 가 져 오 거나 설정 합 니 다.(현재 경로 의 정 보 를 가 져 옵 니 다)
  • 4.간단 한 업무 논 리 를 작성 한다.
    
     public class AuthenticationTest: IAuthorizationFilter
     {
     public void OnAuthorization(AuthorizationFilterContext context)
     {
      Console.WriteLine("  Authorization   ");
      //     
      var url = context.HttpContext.Request.Path.Value;
      #region       
      var heads = context.HttpContext.Request.Headers;
      string msg = string.Empty;
    
      foreach (var item in heads)
      {
      msg += item.Key + ":" + item.Value + "\r
    "; } Console.WriteLine(" heads:" + msg); #endregion } }
    5 전역 필터 등록
    Startup.cs 파일 을 찾 은 다음 Configure Services 방법 을 찾 아 코드 를 다음 과 같이 수정 합 니 다.
    
     public void ConfigureServices(IServiceCollection services)
     {
      services.AddControllers();
    
      //       
      #region      
      services.AddMvc(a => {
      a.Filters.Add<AuthenticationTest>();
      });
      #endregion
     }
    6.시작 항목(여 기 는 Kestrel 을 서버 로 시작 하고 콘 솔 프로그램 을 시작 합 니 다)

    시작 하면 콘 솔 에서 위의 그림 과 같이 인쇄 합 니 다.현재 요청 한 Head 정 보 를 얻 을 수 있 습 니 다.만약 에 Head 가 Token 을 포함한다 면 우 리 는 token 을 얻 은 다음 에 token 을 검증 할 수 있 고 그 다음 에 일련의 논리 연산 을 할 수 있 습 니 다.
    7.1 확장 IAsyncAuthorizationFilter
    필 터 는 IAsync Authorization Filter 를 계승 하 는 비동기 필터 도 존재 합 니 다.
    
     public class AsyncAuthentication : IAsyncAuthorizationFilter
     {
     public Task OnAuthorizationAsync(AuthorizationFilterContext context)
     {
      return Task.CompletedTask;
     }
     }
    비동기 적 으로 권한 수 여 를 요청 하 는 필 터 를 확인 합 니 다.이전 IAuthorizationFilter 와 달리 요청 을 처리 하 는 방식 이 다 릅 니 다.하 나 는 동기 화 이 고 하 나 는 비동기 입 니 다.스 레 드 를 알 고 있다 면 이들 의 차 이 를 알 아야 합 니 다.간단 한 소개 만 하고 자신의 업무 논 리 를 작성 하면 자 유 롭 게 작성 할 수 있 습 니 다.
    7.2 확장:401 반환 값 의 정상 적 인 401 오류 수정:
    
    public class AuthenticationTest: IAuthorizationFilter
     {
     public void OnAuthorization(AuthorizationFilterContext context)
     {
      context.Result = new StatusCodeResult(401);
     }
     }
    효 과 는 다음 그림 과 같 습 니 다:

    이것 은 결코 고객 이 보고 싶 어 하 는 것 이 아니 라,우 리 는 반환 값 을 사용자 정의 할 수 있다.
    사용자 정의 401 오류:
    
     public class AuthenticationTest: IAuthorizationFilter
     {
     public void OnAuthorization(AuthorizationFilterContext context)
     {
      context.Result = new JsonResult(new { StatusCodeResult = StatusCodes.Status401Unauthorized, Title = "401", Time = DateTime.Now,test="  " });
     }
     }
    효 과 는 다음 그림 과 같 습 니 다:

    사용자 정의 설정 이 되 돌아 오 는 값 은 제한 이 없 으 며 장면 에 따라 사용자 정의 가 가능 하 며 적당 한 것 이 좋 습 니 다.
    8.요약:
    위의 동작 을 통 해 사용자 정의 권한 필터 의 생 성,등록,사용 등 을 알 수 있 을 것 입 니 다.이 필 터 는 사용자 의 요청 을 제어 할 수 있 습 니 다.현재 사용자 가 익명 으로 로그 인 할 수 있 는 요청 이 무엇 인지,현재 사용자 가 접근 할 수 없 는 요청 이 무엇 인지,한편 으로 는 사용자 정의 권한 관 리 를 작성 하 는 데 도움 을 줄 수 있 습 니까?아니면 그 말 이 적당 한 것 이 중요 합 니까?
    .net core 의 Authorization 필터 사용 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련.net core 필터 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
    작자:생선 을 좋아 하 는 청년
    출처:https://home.cnblogs.com/u/2828sea/

    좋은 웹페이지 즐겨찾기