묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨따라하며 배우는 NestJS
delete({ id, user}) 안되는 문제
저는 id => { id, user} 로 변경하니 type 에러가 발생했습니다.그래서(mac기준) 커맨드 + delete 함수 클릭criteria 변수에 { id:number, user:User} 타입 추가저장이 방법으로 해결했습니다.별거 아니지만 저는 엄청 헤매서 공유차 남깁니다..!
-
해결됨스프링부트 시큐리티 & JWT 강의
시큐리티 필터보다 MyFilter1()을 먼저 실행하는 이유가 궁금합니다.
안녕하세요 강의 잘 듣고있습니다. 감사합니다.강의를 듣다가 MyFilter1()이 시큐리티 필터보다 먼저 실행되야 하는 이유가 궁금해서 질문드립니다.항상 잘 듣고 있습니다.감사합니다.
-
해결됨Spring Boot JWT Tutorial
java: package io.jsonwebtoken.io does not exist 에러 관련
강의 잘 듣고 있습니다 감사합니다!혹시스프링 2.7.3 사용, 자바 11 사용 중인데java: package io.jsonwebtoken.io does not existimport io.jsonwebtoken.*; import io.jsonwebtoken.io.Decoders; import io.jsonwebtoken.security.Keys;요 3개를 import 하지 못합니다...java: package io.jsonwebtoken.io does not exist오류가 뜹니다... 바쁘신데 죄송합니다.
-
미해결스프링부트 시큐리티 & JWT 강의
안녕하세요 강의 듣던중 JWT와 세션에 관해 의문이 들어 질문 남깁니다.
안녕하세요 좋은 강의 잘듣고 있습니다. 다름이 아니라 강의를 듣는중에 의문이 들어 질문 드립니다. 세션과 JWT의 차이가 세션을 유지하냐 안하냐의 차이로 알고 있는데 JWT를 쓸때 authenticaion 객체가 session 영역에 저장됨. 이라고 하셨는데, 인증정보를 세션 저장소에 저장하게 되면 결국 해당 세션을 유지하는 것 아닌가요? 차이가 없어지는 것 아닌가 싶어서 질문 남깁니다. 아, 그리고 추가로 github에 @AuthenticationPrincipal가 사용불가능이라 하셨는데 컨트롤러에서 불러와 보니까 잘 불러와지던데 제가 뭘 잘못한 걸까요?
-
미해결스프링부트 시큐리티 & JWT 강의
주의! WebSecurityConfigurerAdapter deprecated
안녕하세요 저같은 초보자분들이 계실까봐 여기 적어놓습니다ㅎㅎ 강의에서 나온 WebSecurityConfigurerAdapter가 현재 2022년에는 deprecated되었네요...ㅜ 그래서 저도 약간 해매었는데요.. 처음 공부할 때는 그래도 데이터쌓는개념이고, 각자의 인내심을 해당 프레임워크에 익숙하게 하는데도 바쁠 것같아 코드 올려 놓습니다ㅎㅎ 참고하세요! @Configuration @EnableWebSecurity //스프링 시큐리티 필터가 스프링 필터체인에 등록 (스프링 필터 사용해봣쥬?) public class SecurityConfig{ @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf().disable(); http.authorizeRequests() .antMatchers("/user/**").authenticated() .antMatchers("/manager/**").access("hasAnyRole('ROLE_MANAGER','ROLE_ADMIN')") .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')") .anyRequest().permitAll(); return http.build(); } /* 기존: WebSecurityConfigurerAdapter를 상속하고 configure매소드를 오버라이딩하여 설정하는 방법 => 현재: SecurityFilterChain을 리턴하는 메소드를 빈에 등록하는 방식(컴포넌트 방식으로 컨테이너가 관리) //https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter @Override protected void configure(HttpSecurity http) throws Exception{ http.csrf().disable(); http.authorizeRequests() .antMatchers("/user/**").authenticated() .antMatchers("/manager/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')") .antMatchers("/admin").access("\"hasRole('ROLE_ADMIN')") .anyRequest().permitAll(); } */ }
-
미해결스프링부트 시큐리티 & JWT 강의
순환 의존관계오류나신 분들 보세욥!
@Component public class CustomBCryptPasswordEncoder extends BCryptPasswordEncoder { } 위 처럼 따로 BcryptPasswordEncoder를 만들어주고 컨테이너에 등록합니다! //해당 메서드의 리턴되는 오브젝트를 IoC로 등록해준다. /* @Bean() public BCryptPasswordEncoder encoder(){ return new BCryptPasswordEncoder(); } */ 그리고 위의 코드(SecurityConfig)를 저처럼 주석으로 처리해주세요! 순환 참조가 나는 이유: 1. SpringContainer에서 처음 빈으로 등록하기 위해 객체를 생성 하여 줍니다(싱클톤) 2. 그래서 SecurityConfig 객체를 생성하던 중 PrincipalOauth2UserService객체를 의존하고있네요?그래서 PrincipalOauth2UserService를 만들어 주는데.. 3. 어라? PrincipalOauth2UserService에서도 SecurityConfig에서빈으로 등록한 BCryptPasswordEncoder를 참조하고있네?? 4. 오잉? 스프링:참조가 순환되넹?아아아아아악! => 오류 즉, SecurityConfig -> PrincipalOauth2UserService, 다시 PrincipalOauth2UserService->SecurityConfig 그래서 저는 SecuritiConfig -> PrincipalOauth2UserService-> CustomBCryptPasswordEncoder 로 구조를 변경하였습니다.
-
미해결따라하며 배우는 NestJS
EntityRepository 가 deprecated 됐다고 나옵니다.
캡처한것처럼 deprecate됐다고 나오는데 그냥 이후 수업 진행해도 되는건가요?
-
해결됨스프링부트 시큐리티 & JWT 강의
Google Cloud 에 OAuth 테스트 프로젝트를 만들게 되면, 비용이 발생하는지 궁금합니다.
안녕하세요 OAuth Google 강의를 진행하려고 하는데, 문의 사항이 있습니다. Google Cloud 에 테스트 프로젝트를 만들게 되면, 비용이 발생하는지 궁금합니다. 제가 Google Cloud 사용 경험이 없어서 문의를 드립니다.
-
미해결따라하며 배우는 NestJS
ERROR [ExceptionHandler] No repository for "BoardRepository" was found.
안녕하세요. 데이터베이스를 이용한 CRUD 구현 > 게시물 생성하기 를 들으면서 service와 controller 코드를 고치고 npm run start:dev 실행을 하니 아래와 같은 오류가 뜹니다. 똑같이 코드를 보며 하고있는데 아래와 같은 오류가 뜨는 이유를 알 수 있을까요?? ERROR [ExceptionHandler] No repository for "BoardRepository" was found. Looks like this entity is not registered in current "default" connection? RepositoryNotFoundError: No repository for "BoardRepository" was found. Looks like this entity is not registered in current "default" connection? at RepositoryNotFoundError.TypeORMError [as constructor] (/Users/Desktop/nestjs_crud/src/error/TypeORMError.ts:7:9) at new RepositoryNotFoundError (/Users/Desktop/nestjs_crud/src/error/RepositoryNotFoundError.ts:10:9) at EntityManager.getRepository (/Users/Desktop/nestjs_crud/src/entity-manager/EntityManager.ts:964:19)
-
미해결스프링부트 시큐리티 & JWT 강의
스프링 시큐리티 Websecurityconfigureradapter deprecated 문제 해결!! 최신 코드 반영 해두었습니다
스프링시큐리티 Websecurityconfigureradapter deprecated 문제로 코드 수정해서 새로운 브랜치에 올려두었습니다. https://github.com/codingspecialist/Springboot-Security-JWT-Easy/tree/version2
-
미해결따라하며 배우는 NestJS
BoardsController 못불러와요 ㅜ_ㅜ
안녕하세요, controller까지 작성하고 npm run start:dev로 테스트시 빈배열을 못불러오고 {"statusCode":404,"message":"Cannot GET /boards","error":"Not Found"} 통신이 안되네요 ㅜ_ㅜ 터미널을 보니, 모듈까지 불러오고 컨트롤러는 못불러옵니다ㅜㅜ MAPPED{/borads, GET} route도 못불러오구요.. 그냥 모듈까지 불러오고 스타트가 되는데 어떻게 해야할까요 ㅜㅜ?
-
해결됨Spring Boot JWT Tutorial
USER 테이블 생성이 안됩니다.
AUTHORITY, USER_AUTHORITY 테이블은 제대로 생성이 되는데, USER 테이블만 생성이 되지 않습니다.
-
해결됨Spring Boot JWT Tutorial
AuthController관련 문의 드려요!
AuthController에서 38번 행의authenticationManagerBuilder.getObject().authenticate(authenticationToken); 을 진행했을 때 CustomUserDetailsService의 loadUserByUsername가 실행된다고 했는데, 호출하지 않았는데 어떻게 실행되는건가요?? ㅠㅠ
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
JWT_SECRET 관련 질문입니다.
안녕하세요. 좋은 강의 잘 듣고 있습니다. 영상 2분 2초 경에 보면 .env파일에 JWT_SECRET 값을 설정해주시는데 그 값은 임의로 생성하신 건지 아니면 생성하는 규칙이 따로 있는건지 궁금합니다.
-
미해결따라하며 배우는 NestJS
jwt 토큰 생성중에 질문있습니다
안녕하세요. 이렇게 질 좋은 강의를 무료로 열어주신 것에 먼저 감사드립니다. 제가 아직 잘 못따라가서인지 모르겠지만 현재 controller, service, repository 세부분을 나누어서 역할을 구분짓고 있습니다 controller에선 엔드포인트 설정해주고 service에선 목적에 맞게 값을 리턴해서 controller에 올려주고 repository에선 DB와 교환이 발생하는 부분은 여기서 관리하고 있습니다 영상에서는 service에서 토큰을 생성후에 객체안에 담아서 accessToken을 넣어주고 있습니다 하지만 저는 repository에서 토큰을 생성후에 토큰을 담아주고 싶은데 Cannot read properties of undefined (reading 'sign') 오류가 나옵니다 구글링을 해보았지만 모듈에 있는 import부분을 건드리라는 말밖에 없는것 같아 질문을 드립니다 현재 제가 작성한 코드는 영상과 전부 같게 작성했고 단지 jwtService:JwtService 선언한 부분만 추가해 주었습니다 왜 sign부분을 읽지 못하는걸까요..? 너무 궁금합니다 * 영상대로 진행하면 제대로 토큰값을 반환합니다! * import { ConflictException, InternalServerErrorException, NotFoundException, UnauthorizedException } from "@nestjs/common"; import { EntityRepository, Repository } from "typeorm"; import { CreateUserDto, UserLoginDto } from "./dto/user.dto"; import { UserStatus } from "./user-status-validation"; import { User } from "./user.entity"; import * as bcrypt from 'bcryptjs' import { JwtService } from "@nestjs/jwt"; @EntityRepository(User) export class UserRepository extends Repository<User> { private jwtService: JwtService; async signIn(userLoginDto:UserLoginDto): Promise<{accessToken:string}>{ const { userid, password } = userLoginDto const user = await this.findOne({ userid }) if(user && (await bcrypt.compare(password, user.password ))){ const payload={userid} const accessToken= await this.jwtService.sign(payload) return {accessToken:accessToken} } else { throw new UnauthorizedException('login failed') } } }
-
미해결스프링부트 시큐리티 & JWT 강의
20초가량에 csrf 를 disable 한 이유가 뭔가요?
이전 수업을 들었으면 알 거라고 하는데 어디에 나와있을까요? 1강에서도 그냥 말없이 disable만 하셔서 질문 남겼는데 여기서도 그냥 넘어가서 제가 빼먹은 부분이 있나 싶어서요
-
미해결스프링부트 시큐리티 & JWT 강의
08:08 시점에 csrf disable 한 이유가 뭔가요?
08:08 시점에 csrf disable 한 이유가 뭔가요? csrf가 기본적으로 켜져 있는건 알겠는데 굳이 disable한 이유가 있나요?
-
미해결따라하며 배우는 NestJS
findOne(id) 에서 에러가 발생한 경우 해결법
# Info 강의 업로드 연도(2021) 와 수강 연도(2022) 사이에 TypeORM 의 버전이 달라서, Repository.findOne() 메서드의 구성이 달라진 것 같다고 생각합니다.강의 대로 코드를 작성하면 후술할 에러가 발생하는데, 해당 부분을 해결하고 나서, 다른 수강생 분들 도 이런 문제를 겪을까 생각되어서 따로 글로 남기게 되었습니다. ## 문제 세 줄 요약 1. fineOne( id) 를 하면 에러가 발생 2. 관련 레퍼런스가 없어서 TypeORM docs 확인 3. fineOneBy({id}) 로 에러 해결 (2022-03-30) 자세한 내용은 ### 해결방법, ### 참고문서, ### 초기질문 참고해주세요.깃 : unchaptered/22-03-nestjs-board: Nest.JS (github.com) ### 해결방법 2022년 3월 30일 기준으로, this.boardsRepository.findOne( id ); 위와 같이 입력을 했는데 에러가 발생했다면, 해당 부분을 다음의 코드로 교체해서 해결할 수 있습니다. this.boardsRepository.fineOneBy({ id }); ### 참고문서 아래 페이지에서 Ctrl + F 로 fineOne 혹은 fineOneBy 를 검색해서 확인하시면 됩니다.TypeORM - Amazing ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Electron platforms. ### 초기 질문 boards.service.ts 의 getBoardById() 에서 this.boardsRepository.fineOne(id); 를 하면 id 에 붉은 경고가 다음과 같이 발생하고 있습니다. 혹시 해당 부분이 왜 문제가 되는지 알 수 있을까요? 정크 데이터까지만 푸쉬 해놓았지만, node_module 버전 문제일까 싶어서 깃 허브 링크도 최하단에 올려놓겠습니다. 위의 에러가 발생하는 해당 코드입니다. async getBoardById(id: number): Promise<Board> { const found = await this.boardsRepository.findOne(id); if (!found) throw new NotFoundException(`Can't find Board by ${id}`); return found; } 엔티티 import { BaseEntity, Column, PrimaryColumn, PrimaryGeneratedColumn } from "typeorm"; import { BoardStatus } from "./board-status.enum"; export class Board extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() title: string; @Column() description: string; @Column() status: BoardStatus; } baords.repository.ts import { EntityRepository, Repository } from "typeorm"; import { Board } from "./entity/board.entity"; @EntityRepository(Board) export class BoardsRepository extends Repository<Board> { } 깃허브 : unchaptered/22-03-nestjs-board: Nest.JS (github.com)
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
JWT와 로그인 서비스 & 순환 참조 모듈 질문드립니다
안녕하세요 강사님 수업에서 공식문서 Request LifeCyle을 보았을때 미들웨어 다음에 Guard가 실행된다고 공식문서에 적혀져있습니다. 그렇다면 수업와 같이 이 사진에서 AuthGuard에 파라미터 ('jwt')을 넘겨주면서 상속을 받았다고 생각하는데 그렇다면 JwtAuthGuard 라는 클래스의 인스턴스를 어디서 누가 실행하는건가요? 주입받는곳이 따로 없어서 내부적으로 어떻게돌아가는지 그리고 파라미터 ('jwt')의 역할에대해서 질문드립니다 부족한 설명 죄송합니다ㅠㅠ 감사합니다.
-
미해결스프링부트 시큐리티 & JWT 강의
BycryptPasswordEncoder 주입시 순화참조 문제
저는 mac m1버전 인텔리제이 spring boot 2.64 버전 java8 로 하고있습니다. 저도 13:41 BycryptPasswordEncoder를 주입하니 SecurityConfig와 순환참조가 걸려 진행이 되지 않았습니다. 그래서 PrincipalOauth2UserService에서 private BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); 이렇게 생성하여서 진행하였습니다. 혹시 강의를 보시는 다른 분들을 위해 참고 코드를 남겼습니다.