Vapor - middleware

2024. 3. 21. 00:05·Vapor-Server with swift

클라이언트(즉 아이폰)에서 서버로 요청을 보낸다. 근데 그 서버에 닿기 직전에 이 벽(미들웨어)를 거쳐서 지나간다. 

ex) Authentication 미들웨어는 유저가 어? 너 회원이야? 아니야? 판단을 할수 있음!!

code로 보자 routes파일에다가 app.middleware.use(LogMiddleware())이거만 해주면 어떠한 우리가 요청을보내든 Log middleware가 찍히는것을 볼 수 있다. 주의행할것은 next.respond(to: request)를 해주지 않는다면 절대 우리가 가려던 곳에 reach할수 없어용

이제 아까 예시를 들었던 유효한 토큰이 있을때만 서버를 통신하도록 하는 코드를 작성해보자!!

struct AuthenticationMiddleware: AsyncMiddleware {
    func respond(to request: Request, chainingTo next: any AsyncResponder) async throws -> Response {
        // Headers: Authorization: Bearer EDFDFJOIJ
        guard let authorization = request.headers.bearerAuthorization else {
            throw Abort(.unauthorized)
        }
        print(authorization.token)
        return try await next.respond(to: request)
    }
}

vapor에 다 있어서 갖다쓰면댐. request.headers.bearerAuthorzation이 없다면!! unauthorized에러를 던져주고 아니면 다음동작을 하게끔 해주면 된다.

그러면 우리는 이 middleware를 아까처럼 모든요청에 다 검사하는것이 아닌 특정한 경우에만 통과해서 가게 하려면 어떻게 해야할까?

    // /members
    app.grouped(AuthenticationMiddleware()).group("members") { route in
        route.get { req async -> String in
            return "MEMBERS INDEX"
        }
        route.get("hello") { req async -> String in
            return "MEMBERS HELLO"
        }
    }

 

이런식으로 써주면 된다. 우리가 이전에 했던것은 group이라는 것을 통해 도메인의 주소를 모아뒀다면 grouped라는 얘는 여기들어오는애는 이 미들웨어를 거쳐서 갈꺼야~라고 설명하는것과 같다. 이러면 헤더에 bearercode가 있는 요청만 성공적으로 가게 된다. 아니면 다 abort 에러뜸 

'Vapor-Server with swift' 카테고리의 다른 글

Vapor - routes관리  (0) 2024.03.20
Vapor-Swift로 서버구축하기  (0) 2024.03.20
'Vapor-Server with swift' 카테고리의 다른 글
  • Vapor - routes관리
  • Vapor-Swift로 서버구축하기
2료일
2료일
좌충우돌 모든것을 다 정리하려고 노력하는 J가 되려고 하는 세미개발자의 블로그입니다. 편하게 보고 가세요
  • 2료일
    GPT에게서 살아남기
    2료일
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • SWIFT개발 (29)
      • 알고리즘 (25)
      • Design (6)
      • ARkit (1)
      • 면접준비 (30)
      • UIkit (2)
      • Vapor-Server with swift (3)
      • 디자인패턴 (5)
      • 반응형프로그래밍 (12)
      • CS (3)
      • 도서관 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
2료일
Vapor - middleware
상단으로

티스토리툴바