소개
게시글
질문&답변
2022.12.27
tsum 관련해서 질문드립니다
저도 그렇게 생각해서, 다음과 같이 접근해보았습니다. 바둑이 무게 W 리스트를 만들고 그 리스트를 내림차순으로 정렬한 후, 처음으로 조건을 만족하는 값(최대 무게 값)이 나오면 재귀 탈출하도록 하였습니다.
- 0
- 1
- 381
질문&답변
2021.09.29
user 세션 serialize 문제 질문
안녕하세요, 제로초님.답변 주셨는데도 불구하고 늦게 응답해서 죄송합니다.말씀해주신, https://github.com/ZeroCho/sleact/blob/master/nest-typeorm/src/auth/local.serializer.ts#L18 위치에 있는console.log(user) 자체가 실행이 되지 않습니다.---------------- auth.service.ts async validateUser 소스코드와 console.log ---------------------- async validateUser(email: string, password: string){ const user = await this.usersRepository.findOne({ where: {email}, select:['id', 'email', 'password', 'nickname'], }) console.log(user); if(!user){ return null; } const result = await bcryptjs.compare(password, user.password); console.log(result); if(result){ const {password, ...userWithoutPassword} = user; return userWithoutPassword; } return null; } query: SELECT `Users`.`id` AS `Users_id`, `Users`.`email` AS `Users_email`, `Users`.`nickname` AS `Users_nickname`, `Users`.`password` AS `Users_password` FROM `users` `Users` WHERE ( `Users`.`email` = ? ) AND ( `Users`.`deletedAt` IS NULL ) LIMIT 1 -- PARAMETERS: ["test5@naver.com"] Users { id: 5, email: 'test5@naver.com', nickname: '테스트1', password: '$2a$12$RXFoHQTpSF05vaQ.USsP7e2M15C7Mi/HhY.eHhy.x/gHQx.J6WHTu' } true ---> user.password와 로그인을 위해 입력 받은 비밀번호 비교 값이 동일한지 비교한 결과 값(result)---------------- local.strategy.ts ----------------- async validate 소스코드와 console.log 부분 async validate(email: string, password: string, done: CallableFunction) { const user = await this.authService.validateUser(email, password); console.log('validate user', user); if (!user) { throw new UnauthorizedException(); } return done(null, user); } validate user { id: 5, email: 'test5@naver.com', nickname: '테스트1' } ------------- local-auth.guard.ts ------------- 소스코드와 console.log 부분 @Injectable() export class LocalAuthGuard extends AuthGuard('local'){ async canActivate(context: ExecutionContext): Promiseboolean>{ const can = await super.canActivate(context); if(can){ const request = context.switchToHttp().getRequest(); console.log('login for cookie'); await super.logIn(request); } return true; } } login for cookie위와 같이 출력됩니다.위의 내용을 편집 없이 로그만 출력하면 아래와 같습니다.--------------------- 시작 --------------- query: SELECT `Users`.`id` AS `Users_id`, `Users`.`email` AS `Users_email`, `Users`.`nickname` AS `Users_nickname`, `Users`.`password` AS `Users_password` FROM `users` `Users` WHERE ( `Users`.`email` = ? ) AND ( `Users`.`deletedAt` IS NULL ) LIMIT 1 -- PARAMETERS: ["test5@naver.com"] Users { id: 5, email: 'test5@naver.com', nickname: '테스트1', password: '$2a$12$RXFoHQTpSF05vaQ.USsP7e2M15C7Mi/HhY.eHhy.x/gHQx.J6WHTu' } true validate user { id: 5, email: 'test5@naver.com', nickname: '테스트1' } login for cookie [Nest] 29836 - 2021. 09. 29. 오후 9:06:02 ERROR [ExceptionsHandler] Failed to serialize user into session Error: Failed to serialize user into session at pass (D:\Slack\nest\dist\main.js:14934:19) at Authenticator.serializeUser (D:\Slack\nest\dist\main.js:14952:5) at SessionManager.logIn (D:\Slack\nest\dist\main.js:15240:8) at IncomingMessage.req.login.req.logIn (D:\Slack\nest\node_modules\passport\lib\http\request.js:50:33) at D:\Slack\nest\dist\main.js:13559:64 at new Promise () at LocalAuthGuard. (D:\Slack\nest\dist\main.js:13559:23) at Generator.next () at D:\Slack\nest\dist\main.js:13516:71 at new Promise () --------------------- 끝 ---------------서버 구동 후 POSTMAN으로 로그인 을 시도하고 있는 상황입니다.
- 0
- 2
- 362
질문&답변
2021.09.16
회원 가입 프로세스 관련 질문
감사합니다 조현영 선생님.포스트맨을 처음써봐서 사용법에 익숙치 않아 포스트맨에서 POST로 raw 데이터를 보낼 때 json 형식이 아니라 text로 보내서 그런것이었어요. 빠른 답변 감사드립니다!
- 0
- 2
- 232