전체 글 (730) 썸네일형 리스트형 [Key Cloack] 로그인 횟수 제한 잘 없는 내용이 길래... 공식문서를 봐도 잘 없고 무튼 키클락 사용하다가, 보안 쪽 관련 설정할게 있었다. 로그인 실패횟수 초과시 계정을 잠그는 거다. 키클락 관련 설정을 찾아봐도, 뭔가 이렇다할 글이 없어서 적는다. 대부분 브루트 포스 공격 (무차별 대입)을 막기 위해서 많이 방어를 하는데, 키클락을 사용하면 이걸 별도로 개발해야할까? 제공안할까? 찾아본 결과 제공한다. 해당 /auth/admin 콘솔로 들어가게 되면, Realm Settings가 있고, 해당 하위에 Security Dfense가있다. 여기서 브루트 포스 에대한 설정을 키면, 아래와 같이 로그인 실패 횟수에 대한 방어를 할 수 있다. max를 5로 두고, 실패시 1분을 기다리고 테스트 해보자 실패를 하면, 아래와 같이 계정이 잠겨서 .. [DDD] Axon framework 를 사용해보자 (1) axon framework는 axon server와 axon framework가 있다. axon framework 에서 이벤트 소싱이 발생될 때, axon-server가 아닌, 카프카나 외부 모듈을 사용할 수 있는데, 우선은 해당 axon-framework와, axon-sever를 통해서 진행해보자 axon framework의 아키텍처는 아래와 같다. 대게는 데이터를 변경하는 Command Event와, 조회용 Query에 대한 저장소가 분리 되어있다. 커맨드를 날리게 되면, 해당 Command Handling Component가 받아서, 처리를 한다. 처리 중에 외부 저장소에 영속이 필요한 경우 persist 작업을 거치고, 이러한 변화에 대한 이벤트를 이벤트 핸들링 Component가 받아 처리하는 .. [NestJs] TypeOrm 변경 및 Repository 우선 게시물에 대한 Entity를 아래와 같이 바꿨다. import { BaseEntity, Column, Entity, OneToMany, PrimaryGeneratedColumn, } from 'typeorm'; import { Record } from './record.entity'; @Entity() export class Board extends BaseEntity { @PrimaryGeneratedColumn() uid: number; @Column() title: string; @Column({ unique: true }) userId: string; @Column() nickname: string; @Column() password: string; } board.repository.ts i.. [NestJS] MariaDB , TypeOrm 세팅 일단 가볍게 이미지를 받아준다. docker pull mariadb 그리고, 포트랑 이름, 볼륨 마운트 정보를 넘겨서 커맨드를 입력한다. 사용자,포트,데이터베이스를 한번에 생성한다. docker run -d --name mydb -p 3306:3306 --env=MYSQL_ROOT_PASSWORD=1234 --env=MYSQL_USER=admin --env=MYSQL_PASSWORD=admin --env=MYSQL_DATABASE=test mariadb 도커 프로세스를 확인한다. 끝 이제 NestJS쪽에서 디비 연동 및 세팅을 진행해보자. 일단. TypeOrm을 사용하기 위해서, 관련 라이브러리를 설치해줘야 한다. npm install --save @nestjs/typeorm typeorm mysql2 .. [AWS] Multiplatform Docker image를 빌드하는 법 저번에 docker buildx로 멀티플랫폼 이미지를 빌드했었다. 근데, 그거를 오늘 했는데 너무 오래걸렸다. 그래서 조금 방법을 바꿨다. 우선, 리눅스의 플랫폼을 보려면, docker version으로 확인해보면된다 아래와 같이 나오는 곳에서 확인해보면 된다. server: Engine: Version: 20.10.21 API version: 1.41 (minimum version 1.12) Go version: go1.18.1 Git commit: 20.10.21-0ubuntu1~22.04.3 Built: Thu Apr 27 05:37:25 2023 OS/Arch: linux/amd64 Experimental: false 멀티 플랫폼 이미지 빌드 docker build --platform linux/.. [Java] Record class란? Jdk 버전에 대한 팔로우업에 잊고 행복한 삶을 살다가 Jdk 14부터 정식 릴리즈한 Record class라는 애가 나왔고. DTO로써 사용하기 최고라고 추천을 받아 공부겸 포스팅을 진행하려고한다. 1) Record 클래스가 뭔데? 레코드란 데이터클래스 이며, 순수하게 데이터를 보유하기 위한 특수한 종류의 클래스이다. 코틀린의 데이터 클래스와 비슷한 느낌이다. 데이터의 유형만 딱 나타내는 느낌으로, DTO클래스를 생성할때 굉장히 간결해지는 장점이 있다. 2) 샘플 소스 및 대략적인 사용 예제 한 30%의 사람들 혹은 옛날 코드들은 이렇게 DTO가 짜여있다. package com.inna.innabackend.dto; public class SampleRecordDto { private String na.. [NestJS] 커스텀 파이프 개발 자바랑 살짝 비슷하게 생겼는데 커스텀 파이프는 PipeTranform을 구현해야 하고, 하위 transform()메소드를 구현해야한다 import { ArgumentMetadata, PipeTransform } from "@nestjs/common"; export class BoardStatusValidationPipe implements PipeTransform { transform(value: any, metadata: ArgumentMetadata) { console.log(value) console.log(metadata) return value; } } @Patch('/:id/status') updateBoardStatus( @Body('status',BoardStatusValidationPip.. [NestJs] 예외 처리 그냥 뭐.. 정의 된 예외를 던져주면된다. 스프링이랑 이건 뭐 거의 동일하다. getBoardById(id: string) : Board{ const board = this.boards.find((board) => board.id == id); if(!board) throw new NotFoundException(); return board } throw new NotFoundException("Not Found Exception"); 이렇게 하면 Exception message까지 가능하다. 이렇게 확인까지 가능하다. 생각보다 간편하다. ExceptionHandler 기능을 하는것도 있을것같은데...무튼 그렇다. ExceptionHandler라기 보다는, 글로벌하기 파이프를 연결 하면.. 가능할 것같다.. 이전 1 ··· 26 27 28 29 30 31 32 ··· 92 다음