Design Pattern 3

디자인 패턴을 적용한 oauth login 구현 Part 3

마지막으로 서비스 단에서 가독성이 더 좋고, 코드를 조금 더 재활용할 수 있도록 디자인 패턴을 적용해보자. 1. Strategy (전략 패턴) 전략 패턴은 중간에 추상화된 인터페이스를 하나 만들고, 필요에 따라 적절한 클래스에 속하는 인스턴스를 껴서 사용하는 방식이다. 덕 타이핑이라는 용어가 있는데, "만약 어떤 동물이 오리처럼 꽥꽥거리고, 뒤뚱거리면서 걷고, 수영하고 등등 오리가 하는걸 다 한다면 난 그걸 오리라고 취급하겠다" 라는 뜻에서 용어를 그렇게 정했다고 한다. 상황에 완전히 들어맞지는 않지만 나는 이 패턴을 이해하는데 도움이 되었다. 코드에 대입하자면 몇가지 함수가 정의된 인터페이스가 있고 (class와 비슷하다고 보면 된다.), 다른 클래스가 이 인터페이스에 정의된 함수를 다 가지고 있다면,..

Nodejs 2023.12.10

디자인 패턴을 적용한 oauth login 구현 Part 2

이어서 실제로 oauth login을 구현하는 코드를 짜보자. 1. 코드 작성 controller, service단을 주로 보게 될텐데, 내가 처음 카카오 api를 이용해 oauth login을 구현할 땐 다음과 같았다. 1-1. controller import { Controller, Get, Query, Res } from "@nestjs/common"; import { LoginService } from "./login.service"; import { ConfigService } from "@nestjs/config"; @Controller("login") export class LoginController { constructor( private readonly loginService: Logi..

Nodejs 2023.11.29

디자인 패턴을 적용한 oauth login 구현 Part 1

어플리케이션에 oauth 기능을 구현해보았는데, 구현을 하다보니 oauth login 기능을 제공하는 여러 개의 제3자 앱이 제공해주는 기능, 각각의 코드 흐름들이 대부분 비슷했고, 마침 그 때 디자인 패턴을 조금 공부하고 있어 상황에 적합한 디자인 패턴을 적용해 oauth login 기능을 코드를 어느 정도 효율적으로 짜서 구현할 수 있었다. oauth login은 제3자앱에서 인증을 거쳐 개인 정보를 전달받는 기능이다. 사용자는 보안적으로 신뢰가 보장된 한정된 주체에게만 개인 정보를 공개, 저장할 수 있고, 어플리케이션은 사용자의 정보를 굳이 자신들이 따로 저장하지 않음으로써 보안에 대한 부담을 덜 수 있다. 1. OAuth login 메커니즘 Oauth login의 진행은 다음과 같다. 주의해야할 ..

Nodejs 2023.11.22