inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

role 컬럼은 꼭 들어가야하나요?

해결됨

스프링부트 시큐리티 & JWT 강의

안녕하세요 강의내용보고 궁금해서 글 남깁니다! 대부분 jwt 시큐리티를 구현할때 role이라는 컬럼을 넣으시는거 같은데 왜 들어가야하는지 궁금합니다. 필수값인가요? 감사합니다

  • spring
  • spring-security
  • jwt
성경수 댓글 1 좋아요 1 조회수 516

설명란이 대체 어디에 있죠?

해결됨

Spring Boot JWT Tutorial

코드를 복사 붙여 넣기 할 수 있도록 설명란에 추가한다고 하셨는데 대체 설명란이 어디에 있죠? 목차에도 따로 없고 강의 페이지의 휠을 내려도 따로 자료가 없는데요?? 알려주시면 감사하겠습니다.. 현재 Security 설정, Data 설정하는 부분에서 지금 코드를 일일이 꾸역꾸역 치고있네요.. 자료 알려주시면 감사하겠습니다.

  • spring-boot
  • jwt
리자몽 댓글 2 좋아요 1 조회수 877

슬랙방에 들어가지지 않습니다

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

선생님 안녕하세요 슬랙방 링크를 클릭하니 이런 페이지가 뜹니다.

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
댓글 1 좋아요 0 조회수 476

/usr/local/etc/mongod.conf 파일이 없음

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

맥에서 vim /usr/local/etc/mongod.conf 를 입력했는데 기존 파일이 없어서 새로 작성되고, :wq!로도 저장이 안됩니다. 그리고 애초에 /usr/local 밑에 etc 폴더가 없습니다. 어떻게 해결해야 하나요? 위의 과정 없이 mongo admin -u를 진행하니 에러가 뜹니다.

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
je 댓글 1 좋아요 0 조회수 1052

passport.authenticate('local/kakao') 관련 질문

해결됨

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

안녕하세요 routes/auth.js에서 passport.authenticate('local' / 'kakao')로 로그인전략을 실행할 때 auth.js에서는 local(), kakao()가 있는 passport/index.js를 require 한 적이 없는데도 실행되는 걸 보고 질문드립니다. passport 모듈 내에 passport폴더를 자동으로 인식하는 기능이 있는건가요?

  • node.js
  • mysql
  • mongodb
  • express
  • typescript
  • socket.io
  • jwt
Donggun Jang 댓글 1 좋아요 0 조회수 456

const config = require('../config/config')[env];를 es모듈로 불러오는 방법

해결됨

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

안녕하세요 자꾸 글 작성했다 지웠다 해서 죄송합니다. 직접 검색해보고 해결해보려했는데 안되어서 다시 남깁니다. 7.6장 model/index.js 파일중에서 const config = require('../config/config')[env]; 수업에 나왔던 이 코드와 동일하게 동작하게끔 es모듈 방식으로 import하는 코드를 작성하려 합니다 import cfg from '../config/config.json' assert { type : 'json' } const config = cfg[env]; 이렇게 작성해 보았는데 (node:10404) ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time (Use node --trace-warnings ... to show where the warning was created) 이런 경고가 뜨고, 무시하고 app.js를 실행하면 서버가 실행되긴 하는데 책&예제코드에 나오는 메시지와는 다른 아래와 같은 메시지가 나옵니다. Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'users' AND TABLE_SCHEMA = 'nodejs' Executing (default): SHOW INDEX FROM users FROM nodejs Executing (default): SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = 'comments' AND TABLE_SCHEMA = 'nodejs' Executing (default): SHOW INDEX FROM comments FROM nodejs 어떻게 해야 es모듈에서도 동일하게 동작하게끔 할 수 있는지 궁금합니다.

  • jwt
  • Socket.io
  • mysql
  • nodejs
  • typescript
  • mongodb
  • express
Donggun Jang 댓글 1 좋아요 2 조회수 697

수업 내용에 대해 질문드립니다.

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

안녕하세요 http.createServer(async (req, res) => { try { if (req.method === 'GET') { if (req.url === '/') { const data = await fs.readFile(path.join(__dirname, 'restFront.html')); res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); return res.end(data); } else if (req.url === '/about') { const data = await fs.readFile(path.join(__dirname, 'about.html')); res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); return res.end(data); } else if (req.url === '/users') { res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' }); return res.end(JSON.stringify(users)); } // /도 /about도 /users도 아니면 try { const data = await fs.readFile(path.join(__dirname, req.url)); return res.end(data); } catch (err) { // 주소에 해당하는 라우트를 못 찾았다는 404 Not Found error 발생 } restFront.js , restFront.css 등을 받아오는 try 부분에서 강의에는 const data = await fs.readFile(`.${req.url)`);로 수업하셨는데 책과 깃헙예제에는 const data = await fs.readFile(path.join(__dirname, req.url)); 로 되어있어가지구요 1. .${req.url} 에서 백틱과 .은 꼭 쓰여야 하는건지랑 2. 책의 예제코드에서 __dirname의 경로는 restServer.js가 있는 위치가 기준이 되는건지 질문드립니다. else if (req.method === 'POST') { if (req.url === '/user') { let body = ''; // 요청의 body를 stream 형식으로 받음 req.on('data', (data) => { body += data; }); // 요청의 body를 다 받은 후 실행됨 return req.on('end', () => { console.log('POST 본문(Body):', body); const { name } = JSON.parse(body); const id = Date.now(); users[id] = name; res.writeHead(201, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end('등록 성공'); }); } } return req.on('end', () =>{}) 에서 'end'라는 이벤트가 어느 부분에서 발생해서 저기 들어가는건지도 궁금합니다.

  • mysql
  • nodejs
  • mongodb
  • typescript
  • Socket.io
  • express
  • jwt
Donggun Jang 댓글 1 좋아요 0 조회수 507

강사님 질문이있습니다 ㅠㅠ

미해결

스프링부트 시큐리티 & JWT 강의

public class MyCustomDsl extends AbstractHttpConfigurer<MyCustomDsl, HttpSecurity> { @Override public void configure(HttpSecurity http) throws Exception { System.out.println("체크포인트!@@!@!@!@"); AuthenticationManager authenticationManager = http.getSharedObject(AuthenticationManager.class); http .addFilter(new LoginFilter(authenticationManager)) .addFilterAfter(jwtFilter, UsernamePasswordAuthenticationFilter.class); } } 를 구현하고, 로그인이 완료 되었을 때, @Override protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { log.info("successfulAuthentication 함수 실행: 로그인 성공"); PrincipalDetails principalDetails = (PrincipalDetails) authResult.getPrincipal(); /* 로그인 완료, 1. 토큰 생성 2. 쿠키 장착 */ response.setHeader("gd", "gdgd"); // response.sendRedirect("/api/loginTest"); // super.successfulAuthentication(request, response, chain, authResult); } 이 메서드 까지 구현했습니다. 제 원래 로직은 액세스 토큰, 리프레쉬 토큰을 생성하고 리프레쉬 토큰을 DB에 담고 액세스 토큰, 레프레쉬 토큰 두 개를 쿠키에 저장하는 로직입니다. ResponseCookie build = ResponseCookie .from("accessToken", "gd") .path("/") .httpOnly(true) // 시간 .maxAge(JwtUtil.REFRESH_TOKEN_EXPIRE_TIME) .sameSite("Lax") .build(); ResponseEntity.ok().header("Set-Cookie", build.toString()) .body("ok"); 대충 쿠키를 생성해서 그 쿠키를 헤더에 담는 방식을 사용 중인데, 이렇게 로그인 완료 메서드에서 구현할 방법이 없고 헤더에 저장할 방법이 없어서 너무 막막합니다.. Controller에서 그냥 구현하면 ResponseEntity를 이용해서 헤더에 고정적으로 담을 수 있는데 로그인 성공 메서드에서 어떻게 해야 이렇게 똑같이 구현을 할 수 있을까요..ㅠㅠㅜ?

  • jwt
  • spring-security
  • spring
  • Spring Security
진짜 잘하고싶다 댓글 1 좋아요 0 조회수 449

안녕하세요 강사님 질문이 있습니다.

미해결

스프링부트 시큐리티 & JWT 강의

loadUserByUsername 메서드를 구현하지 않아도 로그인 기능, 권한 넘겨주기 다 가능할 거 같은데 이 메서드가 꼭 필요한 이유가 있나요? doFilter를 안 탄다고 말씀해주셨는데 전 JWT를 쿠키에 저장하는데, 쿠키의 값이 없을 때 doFIlter를 그냥 빠져나가는 식으로 구현했습니다. successfulAuthentication이나, 권한을 UsernamePasswordAuthenticationToken authentication // = new UsernamePasswordAuthenticationToken(userId, null, List.of(new SimpleGrantedAuthority("ROLE_USER"))); authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); SecurityContextHolder.getContext().setAuthentication(authentication); 이렇게 넣을 수 있던데 이러한 방식은 뭐가 잘못된 걸까요? 문제가 생기나요?

  • spring-security
  • Spring Security
  • spring
  • jwt
진짜 잘하고싶다 댓글 1 좋아요 0 조회수 416

새로고침 한번에 클러스터 2개 종료

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

안녕하세요? setTimeout 대신 setImmediate를 적용해 요청이 발생하는 즉시 워커가 종료되게 해보았는데요, 이 경우엔 워커가 한번에 두개씩 종료됩니다. DevTool - network 창에 보이는 요청은 새로고침 1회당 GET 1회씩인데 왜 이러는지 궁금합니다! const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { console.log(`마스터 프로세스 아이디 : ${process.pid}`); // CPU 갯수만큼 워커를 생산 for (let i=0; i < numCPUs; i++ ){ cluster.fork(); } //워커가 종료되었을 때 cluster.on('exit', (worker, code, signal) => { console.log(`${worker.process.pid}번 워커가 종료되었습니다.`); console.log('code', code, `signal`, signal); }); } else { // 워커들이 포트에서 대기 http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8'}); res.write('<h1>Hello Node!'); res.end('<p>Hello Cluster!</p>'); setImmediate(()=> { process.exit(1); }); }).listen(8086); console.log(`${process.pid}번 워커 실행`); };

  • node.js
  • Socket.io
  • nodejs
  • mysql
  • express
  • mongodb
  • socket.io
  • typescript
  • jwt
Donggun Jang 댓글 2 좋아요 0 조회수 458

비동기 방식에서의 에러처리

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

안녕하세요! 어제 유투브에서도 질문드렸었는데 잘 이해가 가지 않아 다시 질문드립니다. 184p server1-1.js const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.write('<h1>Hello Node!</h1>'); res.end('<p>Hello Server!</p>'); }); server.listen(8080); server.on('listening', () => { console.log('8080번 포트에서 서버 대기 중입니다!'); }); server.on('error', (error) => { console.error(error); }); 어제 이 부분 에러처리를 try/catch로 하면 안되는건지 질문드렸었는데 server함수가 비동기로 진행되는거라 try/catch 적용하면 안된다고 답변받았었습니다. 186p server2.js const http = require('http'); const fs = require('fs').promises; http.createServer(async (req, res) => { try { const data = await fs.readFile('./server2.html'); res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.end(data); } catch (err) { console.error(err); res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end(err.message); } }) .listen(8081, () => { console.log('8081번 포트에서 서버 대기 중입니다!'); }); 그런데 바로 뒤에서 async를 사용하여 비동기임이 확실한데도 try/catch로 에러처리를 하신 부분이 나와서 잘 이해가 안갑니다.. 뒷부분에서는 왜 try/catch를 적용해도 되는건지 궁금합니다!

  • node.js
  • jwt
  • Socket.io
  • mongodb
  • mysql
  • express
  • socket.io
  • nodejs
  • typescript
Donggun Jang 댓글 1 좋아요 0 조회수 403

마지막 강의 질문드립니다.

미해결

스프링부트 시큐리티 & JWT 강의

@Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { // 안 지우면 응답을 한번하고 아래서 두번하게 됨 오류가 됨 // super.doFilterInternal(request, response, chain); System.out.println("인증이나 권한이 필요한 주소 요청이 됨 "); String jwtHeader = request.getHeader("Authorization"); System.out.println("JWT HEADER :: {} " + jwtHeader); // JWT 토큰을 검증해서 정상적인 사용자인지 확인하기 if (jwtHeader == null || !jwtHeader.startsWith("Bearer")) { chain.doFilter(request, response); // 밑에 진행이 안되게 return; } String token = request.getHeader("Authorization").replace("Bearer ", ""); String username = JWT.require(Algorithm.HMAC512("cos")).build().verify(token).getClaim("username").asString(); // 서명이 정상적으로 됨 if (username != null) { User userEntity = userRepository.findByUsername(username); PrincipalDetails principalDetails = new PrincipalDetails(userEntity); // 임의의 authentication 만들기 username 이 null 이 아니라는게 인증이 된거임 // jwt 토큰 서명을 통해서 서명이 정상이면 Authentication 객체를 만들어준다 Authentication authentication = new UsernamePasswordAuthenticationToken(principalDetails, null, principalDetails.getAuthorities()); // 시큐리티 저장할 수 있는 세션 공간 //강제로 시큐리티의 세션에 접근하여 Authentication 객체를 저장 SecurityContextHolder.getContext().setAuthentication(authentication); } chain.doFilter(request, response); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf().disable(); // 내 서버는 STATELESS http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .addFilterBefore(new JwtFilter(), SecurityContextHolderFilter.class) .addFilter(corsFilter) // CrossOrigin(인증X) 시큐리티필터에 등록인증(O) .addFilter(new JwtAuthenticationFilter(authenticationManager())) .addFilter(new JwtAuthorizationFilter(authenticationManager(), userRepository)) // CrossOrigin 정책 안쓰고 모든 요청 허용 .formLogin().disable() // 폼로그인 사용 안함 .httpBasic().disable() // http 로그인 방식 안쓰겠다 .authorizeHttpRequests(auth -> auth.requestMatchers("/api/v1/user/**").hasAnyRole("ROLE_USER", "ROLE_MANAGER", "ROLE_ADMIN") .requestMatchers("/api/v1/manager/**").hasAnyRole("ROLE_MANAGER", "ROLE_ADMIN") .requestMatchers("/api/v1/admin/**").hasRole("ROLE_ADMIN") .anyRequest().permitAll() ); return http.build(); } 마지막 강의 실습을 하는데요 디버깅 하면 유저 정보 정보 및 권한이 잘 조회되고 있지만 403 에러가 발생하고 있습니다. SecuriyConfig에는 deprecated 를 이유로 antMatchers가 아닌 저렇게 권한설정을 해주었는데요 잘못된 부분이 있는지 문의드립니다.

  • jwt
  • spring-security
  • Spring Security
  • spring
yoii 댓글 1 좋아요 0 조회수 625

라우트 분리 및 템플릿 엔진 사용법 강의

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

안녕하세요. 이전 강의와 강의 교안과는 다르게, 개정3판 강의에서는 라우트분리 및 템플릿엔진 사용법과 관련된 강의가 빠져있더라고요. 혹시 해당 강의들에 대해서 이번 개정판에서는 더 이상 학습하지 않아도 괜찮기 때문에 강의 내용에서 빠진 것 일까요? 매번 좋은 강의로 감사합니다.

  • node.js
  • jwt
  • express
  • typescript
  • nodejs
  • mysql
  • socket.io
  • mongodb
  • Socket.io
김승현 댓글 1 좋아요 1 조회수 336

async await 관련 질문입니다.

미해결

따라하며 배우는 NestJS

좋은 강의 영상 감사합니다. controller에서 service함수를 이용할때에는 async await 를 안써줘도 괜찮나요? 괜찮은것 같은데 혹시 그 이유는 무엇일까요..?

  • postgresql
  • NestJS
  • nestjs
  • typeorm
  • TypeORM
  • jwt
김민정 댓글 0 좋아요 3 조회수 474

AWS에서 MongoDB 설치

미해결

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

안녕하세요. 15장을 듣다가 궁금해서 Node와 관련이 없는 질문을 드립니다. MySQL은 RDS를 쓴다고 하셨는데 MongoDB를 EC2에서 분리하여서 설치하는 서비스는 무엇인가요? 감사합니다.

  • node.js
  • jwt
  • mysql
  • mongodb
  • express
  • socket.io
  • Socket.io
  • typescript
  • nodejs
gcpok 댓글 1 좋아요 0 조회수 641

BCrypt 암호화하는 과정이 궁금합니다.

미해결

Spring Boot JWT Tutorial

에러 안나고 결과도 잘 나오는데 LoginDto에 password가 어떻게 user 테이블에 있는 암호화된 비밀번호랑 비교돼서 동일한 결과값으로 판단돼서 토큰이 나오는지 궁금합니다. 제가 아직 부족해서인지 따라가면서 봐도 입력받은 password로 암호화하는 작업이 안보여서요

  • jwt
  • spring-boot
  • bcrypt
shi8295 댓글 0 좋아요 0 조회수 567

강의자료 다운로드 관련

미해결

따라하며 배우는 NestJS

안녕하세요! 강의 잘 듣고 있는 수강생입니다. 강의자료 다운 받으면 pdf, xml 모두 폴더가 비어 있습니다. (DS_store 파일만 있어서요..) 혹시 제가 모르는 부분이 있으면 알려주시면 감사하겠습니다!

  • postgresql
  • jwt
  • nestjs
  • typeorm
  • NestJS
  • TypeORM
pluler 댓글 1 좋아요 0 조회수 580

sql 에러

해결됨

Spring Boot JWT Tutorial

@Entity @Table(name = "users") @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class User { @JsonIgnore @Id @Column(name = "userId") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long userId; @Column(name="userName", length = 50, unique = true) private String userName; @JsonIgnore @Column(name = "userPw", length = 100) private String password; @Column(name = "nickName", length = 50) private String nickName; @JsonIgnore @Column(name = "activated") private boolean activated; // @ManyToMany와 @JoinTable은 User객체와 권한객체의 다대다 관계를 // 일대다, 다대일 관계의 조인 테이블로 정했다는 뜻입니다. @ManyToMany @JoinTable( name = "user_authority", joinColumns = {@JoinColumn(name = "userId", referencedColumnName = "userId")}, inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "authority_name")}) private Set<Authority> authorities; package com.example.jwt_security.entity; import lombok.*; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "authority") @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class Authority { @Id @Column(name="authority_name", length = 50) private String authorityName; } Hibernate: drop table if exists authority CASCADE Hibernate: drop table if exists user_authority CASCADE Hibernate: drop table if exists users CASCADE Hibernate: create table authority ( authority_name varchar(50) not null, primary key (authority_name) ) Hibernate: create table user_authority ( user_id bigint not null, authority_name varchar(50) not null, primary key (user_id, authority_name) ) Hibernate: create table users ( user_id bigint generated by default as identity, activated boolean, nick_name varchar(50), user_pw varchar(100), user_name varchar(50), primary key (user_id) ) Hibernate: alter table users add constraint UK_k8d0f2n7n88w1a16yhua64onx unique (user_name) Hibernate: alter table user_authority add constraint FK6ktglpl5mjosa283rvken2py5 foreign key (authority_name) references authority Hibernate: alter table user_authority add constraint FKhi46vu7680y1hwvmnnuh4cybx foreign key (user_id) references users insert into users (userName, userPw, nickName, activated) values ('admin', '$2a$08$lDnHPz7eUkSi6ao14Twuau08mzhWrL4kyZGGU5xfiGALO/Vxd5DOi', 'admin', 1); insert into users (userName, userPw, nickName, activated) values ('user', '$2a$08$UkVvwpULis18S19S5pZFn.YHPZt3oaqHZnDwqbCW9pft6uFtkXKDC', 'user', 1); insert into authority (authority_name) values ('ROLE_USER'); insert into authority (authority_name) values ('ROLE_ADMIN'); insert into user_authority (user_id, authority_name) values (1, 'ROLE_USER'); insert into user_authority (user_id, authority_name) values (1, 'ROLE_ADMIN'); insert into user_authority (user_id, authority_name) values (2, 'ROLE_USER'); 여기서 into 뒤에가 에러가 생기네요 테이블까지는 제대로 생성됐는데 왜그러는지 모르겠어요

  • spring-boot
  • jwt
유요한 댓글 2 좋아요 0 조회수 1193

만약 존재하지 않는 ID가 들어올 경우는 어떻게 하는게 좋을까요?

미해결

스프링부트 시큐리티 & JWT 강의

강사님 안녕하세요. 강의 늘 잘 보고 있습니다. 25강 내용에서, 올바른 id일 경우 password 일치 여부에 따라 404 혹은 401 에러를 응답하는 것은 확인했습니다. 헌데 id 자체가 잘못되었을 경우 서버 에러(500)가 발생하더라구요. 잘못된 ID 입력에 대한 처리를 어떻게 하는게 좋을 지 궁금합니다. Service 계층(loadUserByUsername)에서 한번 검사를 한 후, 통과되었을 시 UserDetails을 return하는 식으로 구현하나요? 이 경우, loadUserByUsername의 return값은 어떤 것이 권장되는지 궁금합니다.

  • spring-security
  • Spring Security
  • spring
  • jwt
최창수 댓글 1 좋아요 1 조회수 635

패스워드 검증은 어디서 이루어지는건가요?

미해결

스프링부트 시큐리티 & JWT 강의

회원가입은 BCryptPasswordEncoder를 통해 패스워드를 암호화를 했었늗데요 @PostMapping("/joinProc") public String joinPorc(User user) { String rawPassword = user.getPassword(); String encPassword = bCryptPasswordEncoder.encode(rawPassword); user.setPassword(encPassword); userRepository.save(user); return "redirect:/login"; } 로그인할 떄 에는 따로 패스워드를 따로 검증하지 않고 username만 확인하더라구요 @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User userEntity = userRepository.findByUsername(username); if(userEntity != null){ return new PrincipalDetails(userEntity); } return null; } @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } 어느 부분에서 자동으로 BCryptPasswordEncoder를 통해 matches 하고 검증하는건가요??

  • spring
  • spring-security
  • Spring Security
  • jwt
김태영 댓글 1 좋아요 0 조회수 736

인기 태그

인프런 TOP Writers

주간 인기글