소개
게시글
질문&답변
2022.12.27
tsum 관련해서 질문드립니다
저도 그렇게 생각해서, 다음과 같이 접근해보았습니다. 바둑이 무게 W 리스트를 만들고 그 리스트를 내림차순으로 정렬한 후, 처음으로 조건을 만족하는 값(최대 무게 값)이 나오면 재귀 탈출하도록 하였습니다.
- 0
- 1
- 366
질문&답변
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 ): Promise boolean >{ 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
- 346
질문&답변
2021.09.16
회원 가입 프로세스 관련 질문
감사합니다 조현영 선생님. 포스트맨을 처음써봐서 사용법에 익숙치 않아 포스트맨에서 POST로 raw 데이터를 보낼 때 json 형식이 아니라 text로 보내서 그런것이었어요. 빠른 답변 감사드립니다!
- 0
- 2
- 223