월 66,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링과 JPA 기반 웹 애플리케이션 개발
(응용) 프로젝트 진행 전 상수-Constants 구성 에 관한 질문입니다.
자주 쓰이고, 오타가 날법한 String 을 모아 아래 처럼 상수화 했습니다. 상수패키지 com.studyolle.core.constant.* 이후 Controller , Test 등에서 아래와 같이 사용중입니다. 질문입니다 Enum 으로 관리 하려고 했지만, 컨트롤러-핸들러 의 @GetMapping( Enum.URI.name() ) 과같은 선언도 불가능 하고, 단순 값 참조를 Enum .name() 이라던지, Enum .custom() 과 같이 덕지덕지 메서드가 붙게되어, 심플하게 하고자, Enum 은 사용하지 않았습니다. 그러나 이렇게 static final 필드로 관리하다보면, 언젠가 양이 많아 질탠데, 이럴 경우는 또다시 나누어야 될거라 생각이 듭니다만.. 이런 일반적인 방식 보다 효과적으로 관리하는 ( Map 을 쓴다던지, 특정 패턴이라던지) 방법이 있을까요? 상수 관리는 이런 방향이 괜찮았다.. 라는 사례가 궁금합니다. 읽어주셔서 감사합니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
th:replace
강의 중에<div th:replace= ~~~와 <div class= ~~~(th없음) 코드가 혼재되어 있는데 th없이 단순 class만 명시한 코드도 정상 동작 하네요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
새로고침시 쿼리
스터디 조회 화면 새로고침시 intellij 콘솔창에 쿼리가 나오지 않는데 설정등이 필요한가요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
generateEmailCheckToken() 위치
generateEmailCheckToken()를 saveNewAccount() 안으로 넣어서 한번에 save를 하면 안되나요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
여태껏 들었던 강의 중 가장 불친절 한 강의
이 분은 진짜 글을 남겨야겠네요. 기본 적으로 강의 할 때 목소리 톤이 최소한의 겸손이 안되어 있는 느낌. "이건 당연히 아셔야 해요", "찾아보셔야 해요" <-- 이런 말투들도 최대한 이해하려고 노력 했음. 근데 가관은 bootstrap 코드를 자기가 copy&paste 해서 옮기는데 화면에 보여주지도 않음. 그거 하나하나 보면서 sign-up.html 파일 내용 기입하고 있어서 힘들었는데... 질문 게시판 답변 보니...그제서야 거기서 자기 git의 commit check out해서 옮기라네...참... 아니 강의를 하면서 그 때 그 때 말을 해주든가.. 불친절하고, 내용도 그냥 다 알아야 하는 것들 혼자 한 번 적용해보는 느낌. 새로운 내용이 나오면 그 내용을 친절하게 알려주면서 강의 노트에 있는 것도 아니고.... 그냥 말로 대충 지나가듯이 설명.... 좀 겸손하지 않으신 듯 해요. 강사 자체가...
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
WithAccountSecurityContextFacotry
안녕하세요 백기선 강사님 중요한(?) 것은 아니지만.. class 이름에 오타가 있는 것 같습니다... WithAccountSecurityContextFacotry 에서 Factory
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
자동으로 /login 으로 갑니다.
안녕하세요 시큐리티 설정을 똑같이 따라했는데 무조건적으로 localhost:8080/login 으로 이동합니다. 보면 defaultsecurityfilterchain 에 대한 Info 로그값이 좀 다른거 같습니다. 2022-01-18 15:07:52.384 INFO 18812 --- [ restartedMain] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5fd1d1b9, org.springframework.security.web.context.SecurityContextPersistenceFilter@11c3b3bb, org.springframework.security.web.header.HeaderWriterFilter@3ca082eb, org.springframework.security.web.csrf.CsrfFilter@47d715ad, org.springframework.security.web.authentication.logout.LogoutFilter@1a0999e4, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@14c2a23c, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@391c5679, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@535f17a2, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@1ec3adaf, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@39a47f21, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@76fa2ae5, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@507276b3, org.springframework.security.web.session.SessionManagementFilter@167984e5, org.springframework.security.web.access.ExceptionTranslationFilter@b55bce7, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@331cdb8] 저같은경우는 위와같이 나오는데 무슨 설정의 차이일까요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
비즈니스 로직의 처리 방식의 차이점 문의
안녕하세요, 먼저 강의 잘 듣고 있습니다. 금일 진행중에...뭔가 좀 정리가 안되는 부분이 있어서 한번 문의드립니다. 멤버가 가입하는 저장 처리를 할 경우, 강사님이 구현하신 코드는 서비스에서 도메인객체에서 처리하게끔 구현하셨는데... - StudyService.javapublic void addMember(Study study, Account account) { study.addMember(account); } - Study.javapublic void addMember(Account account) { this.getMembers().add(account);} 저 같은 경우에는 StudyService 에서 바로 처리하도록 했는데... public void join(Account account, Study study) { Optional<Account> byId = accountRepository .findById(account.getId()); byId.ifPresent(a -> study.getMembers().add(a)); } 의문 1) Account는 detach이기때문에 persistence상태로의 조회로 한번 더 안해도 되는건가요? 2) 심플하게 간다면 Service 코드에서 직접 study.getMembers().add(account); 로 해도 될텐데, 왜 도메인 객체로 넘겨서 가입(저장) 처리를 하셨는지가 궁금합니다. 3) 2번과 같은 연장선상의 질문이긴 합니다만 서비스에서 직접 처리한 (예: study.setPath(newPath);)와의 차이가 있는것인가요? 디자인 패턴의 이슈인지, 아님 다른 효율성 들을 위한 고려인지...궁금해서 문의드립니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
스프링이 자동으로 재실행됩니다.
실행은 정상적으로 되는데. 계속 자동으로 재시작이 됩니다.. 초반부에서도 재시작되는 경우가 있긴했는데. 가끔가다 간혈적으로 한번 그러길래 넘겼는데. 진행하다보니깐 재시작을 너무 많이해서. 어려움이 있어서. 질문드립니다. 쓰레드 관련 문제인가 싶기도한데. 그쪽 부분은 @Asnyc 사용하려고 @EnableAsnyc밖에 없는데. 혹시 무슨 문제인지 알수있을까요? . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.6.2) 2022-01-07 00:01:30.090 INFO 18482 --- [ restartedMain] c.p.o.OttShareServiceApplication : Starting OttShareServiceApplication using Java 16.0.2 on ijaegeon-ui-MacBookAir.local with PID 18482 (/Users/jaegeon/Desktop/projects/ott-share-service/build/classes/java/main started by jaegeon in /Users/jaegeon/Desktop/projects/ott-share-service) 2022-01-07 00:01:30.091 INFO 18482 --- [ restartedMain] c.p.o.OttShareServiceApplication : No active profile set, falling back to default profiles: default 2022-01-07 00:01:30.528 INFO 18482 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2022-01-07 00:01:30.573 INFO 18482 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 32 ms. Found 2 JPA repository interfaces. 2022-01-07 00:01:30.713 INFO 18482 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2022-01-07 00:01:30.716 INFO 18482 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2022-01-07 00:01:30.716 INFO 18482 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.56] 2022-01-07 00:01:30.727 INFO 18482 --- [ restartedMain] o.a.c.c.C.[Tomcat-5].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2022-01-07 00:01:30.728 INFO 18482 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 636 ms 2022-01-07 00:01:30.745 INFO 18482 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-7 - Starting... 2022-01-07 00:01:30.759 INFO 18482 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-7 - Start completed. 2022-01-07 00:01:30.759 INFO 18482 --- [ restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:799ee181-6d24-4b70-be20-790fa206adfc' 2022-01-07 00:01:30.789 INFO 18482 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2022-01-07 00:01:30.794 INFO 18482 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect 2022-01-07 00:01:30.918 INFO 18482 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2022-01-07 00:01:30.918 INFO 18482 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2022-01-07 00:01:30.934 WARN 18482 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2022-01-07 00:01:30.941 WARN 18482 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mailSenderImpl' defined in file [/Users/jaegeon/Desktop/projects/ott-share-service/build/classes/java/main/com/project/ottshareservice/mail/MailSenderImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.mail.javamail.JavaMailSender' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 2022-01-07 00:01:30.941 INFO 18482 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2022-01-07 00:01:30.941 INFO 18482 --- [ restartedMain] .SchemaDropperImpl$DelayedDropActionImpl : HHH000477: Starting delayed evictData of schema as part of SessionFactory shut-down' 2022-01-07 00:01:31.154 WARN 18482 --- [ restartedMain] o.s.b.f.support.DisposableBeanAdapter : Invocation of destroy method failed on bean with name 'inMemoryDatabaseShutdownExecutor': org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-200] 2022-01-07 00:01:31.155 INFO 18482 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-7 - Shutdown initiated... 2022-01-07 00:01:31.156 INFO 18482 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-7 - Shutdown completed. 2022-01-07 00:01:31.157 INFO 18482 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2022-01-07 00:01:31.172 INFO 18482 --- [ restartedMain] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2022-01-07 00:01:31.187 ERROR 18482 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in com.project.ottshareservice.mail.MailSenderImpl required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found. Action: Consider defining a bean of type 'org.springframework.mail.javamail.JavaMailSender' in your configuration. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.6.2) 이런식으로 반복됩니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
강의에서 사용하시는 문서는 어디에서 볼 수 있을까요?
강의에서 사용하시는 문서는 어디에서 볼 수 있나요? 따로 PDF 같은 걸로 제공되는 게 있을까요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
@MockBean을 사용해서 느려지는 테스트는 어떤식으로 커버하시나요?
스프링 컨텍스트를 한번 띄워놓고 재활용해야 속도가 느려지지 않는데, 매번 @MockBean을 하나씩 끼워넣으면 해당 테스트에서는 스프링 컨텍스트를 새로 로딩해서 많이 느려지는 것 같습니다. 그렇다고 별도의 클래스를 만들어서 @MockBean을 몰아넣자니 디테일이 좀 떨어지는것같구요. 혹시 좋은 솔루션이 있을까요?
- 해결됨스프링과 JPA 기반 웹 애플리케이션 개발
check-login-email.html
안녕하세요, 혹시 view의 check-login-email.html 이 부분이 어디서 쓰이게 되는지 알 수 있을까요? 저 부분이 없어도 동작은 잘 되는 것 같아서요.. 항상 좋은 강의 감사합니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
csrf 관련
아래부분을 추가하면 관심주제 선택시 아래의 메시지와 함께 아무반응이 없습니다. csrf 소스 제거시에는 정상적으로 뜹니다. <script type="application/javascript" th:inline="javascript"> $(function() { var csrfToken = /*[[${_csrf.token}]]*/ null; var csrfHeader = /*[[${_csrf.headerName}]]*/ null; $(document).ajaxSend(function (e, xhr, options) { xhr.setRequestHeader(csrfHeader, csrfToken); }); }); </script>
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
극초반 듣고있는데 db propertyfile이 저한테는 안떠요
testdb를 인텔리제이랑 연결해야하는데...알려주세용..ㅠㅠㅠproperties가 안떠요 dev로 만들었눈데...
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
마지막 이메일 확인 페이지가 안뜹니다
controll 테스트부분에서 notnull에 emailchecktoken에 문제가 없고 가입까지 하고난뒤 check-email-token 값을 복사하여 실행하면 빈화면이 뜹니다 그냥 흰화면만 나오고 f12눌러서 확인하면 <plaintext 문서의 문자 인코딩이 선언되어 있지 않습니다.문서에 US ASCII 외의 문자가 포함되어 있는 경우, 브라우저의 설정에 따라서 글자가 깨질 수 있습니다. 파일 문자 인코딩은 전송 프로토콜로 선언되어 문자 인코딩을 지정하는 바이트 오더 마크가 파일에 사용되어야 합니다.> 이런 오류메시지만 나옵니다. 방법을 찾아보려고 검색도 해봤는데 해결이 안되네요 일단 checked-email <!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"> <title>StudyOlle</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <style> .container{ max-width: 100%; } </style></head><body class="bg-light"> <nav class="navbar navbar-expand-sm navbar-dark bg-dark"> <a class="navbar-brand" href="/" th:href="@{/}"> <img src="/images/logo_sm.png" width="30" height="30"> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item"> <form th:action="@{/search/study}" class="form-inline" method="get"> <input class="form-control mr-sm-2" name="keyword" type="search" placeholder="스터디 찾기" aria-label="Search" /> </form> </li> </ul> <ul class="navbar-nav justify-content-end"> <li class="nav-item"> <a class="nav-link" href="#" th:href="@{/login}">로그인</a> </li> <li class="nav-item"> <a class="nav-link" href="#" th:href="@{/sign-up}">가입</a> </li> </ul>> </div> </nav> <div class="py-5 text-center" th:if="${error}"> <p class="lead">스터디올래 이메일 확인</p> <div class="alert alert-danger" role="alert"> 이메일 확인 링크가 정확하지 않습니다. </div> </div> <div class="py-5 text-center" th:if="${error == null}"> <p class="lead">스터디올래 이메일 확인</p> <h2> 이메일을 확인했습니다. <span th:text="${numberOfUser}">10</span>번째 회원, <span th:text="${nickname}">백기선</span>님 가입을 축하합니다. </h2> <small class="text-info">이제부터 가입할 때 사용한 이메일 또는 닉네임과 패스트워드로 로그인 할 수 있습니다.</small> </div></body></html> controller @Controller@RequiredArgsConstructorpublic class AccountController { private final AccountRepository accountRepository; private final SignUpFormValidator signUpFormValidator; private final AccountService accountService; @InitBinder("signUpForm") public void initBinder(WebDataBinder webDataBinder) { webDataBinder.addValidators(signUpFormValidator); } @GetMapping("/sign-up") public String signUpForm(Model model) { model.addAttribute(new SignUpForm()); return "account/sign-up"; } @PostMapping("/sign-up") public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors) { if (errors.hasErrors()) { return "account/sign-up"; } accountService.processNewAccount(signUpForm); //TODO 회원 가입 처리 return "redirect:/"; } @GetMapping("/check-email-token") public String checkEmailToken(String token, String email, Model model) { Account account = accountRepository.findByEmail(email); String view = "account/checked-email"; if (account == null) { model.addAttribute("error", "wrong.email"); return view; } if (!account.getEmailCheckToken().equals(token)) { model.addAttribute("error", "wrong.token"); return view; } account.setEmailVerified(true); account.setJoinedAt(LocalDateTime.now()); model.addAttribute("numberOfUser", accountRepository.count()); model.addAttribute("nickname", account.getNickname()); return view; }} service @Service@RequiredArgsConstructorpublic class AccountService { private final AccountRepository accountRepository; private final JavaMailSender javaMailSender; private final PasswordEncoder passwordEncoder; @Transactional public void processNewAccount(SignUpForm signUpForm) { Account newAccount = saveNewAccount(signUpForm); newAccount.generateEmailCheckToken(); sendSignUpConfirmEmail(newAccount); } private Account saveNewAccount(@Valid SignUpForm signUpForm) { Account account = Account.builder() .email(signUpForm.getEmail()) .nickname(signUpForm.getNickname()) .password(passwordEncoder.encode(signUpForm.getPassword())) //인코딩해야됨됨 .studyCrateByWeb(true) .studyEnrollmentByWeb(true) .studyUpdateByWeb(true) .build(); return accountRepository.save(account); } private void sendSignUpConfirmEmail(Account newAccount) { SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setTo(newAccount.getEmail()); mailMessage.setSubject("스터디 올래, 회원 가입 인증"); mailMessage.setText("/check-email-token?token="+ newAccount.getEmailCheckToken() +"&email="+ newAccount.getEmail()); javaMailSender.send(mailMessage); }}입니다어디가 문제일까요? 실행화면 git junepro/studyolle1 입니다
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
안녕하세요. 테스트중에 csrf()에서 에러가 발생하는데 잘모르겠습니다.
안녕하세요. 다름이 아니라 5:44 쯤에 csrf() 추가해줬는데 이런 에러가 발생하는데 구글링 해봐도 잘 모르겠습니다. ㅜ 감사합니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
bcrypt 해싱 질문
안녕하세요 평문이랑 해싱된 값이랑 다시 해싱을 하면 원래 해싱값이 나온다. 라고 강의 중 말씀 하셔서 테스트 코드를 작성해 봤는데, 앞 7자리만 같고 뒤는 다른데 이 부분에 대해서 설명 부탁드려도 될까요? //소스코드 @DisplayName("패스워드 해싱 테스트")@Testpublic void passwordHasingTest(){ String password = "1234"; String hashedPassword = ""; hashedPassword = passwordEncoder.encode(password); String secondHashedPassword = passwordEncoder .encode(passwordEncoder.encode(password) + password); assertEquals(hashedPassword,secondHashedPassword);//결과
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
단축키 공유해 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.mac 기준으로.. 같은 여러 코드를 순차적으로 선택 또는 건너뛰면서 지정할때 필요한 단축키 Control + G -> 같은 문장 연속 다중 선택 [Control + Shift + G 마지막 선택 문장 선택 취소] 이 부분은 알고 있었던 부분이고 건너 뛰는 부분이 알고 싶었는데 찾아서.. commend + G -> 하나 다음 단어로 건너뜁니다.. [Commend + Shift + G 이전 단어로 돌아간다.] 강사님께 문의 드렸는데.. 잘 모르신다고 하셔서.. 헤메던 중에 찾았습니다.. 참고하시면 좋을듯...
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
조금 더 안전한 방법과 조금 더 개선한 방법의 차이
안녕하십니까 강사님 ! 질문있습니다 :) 조금 더 개선한 방법의 원리는 만약 인증이 들어왔을 때, Username 과 시리즈는 일치하지만 토큰이 일치하지 않으면 토큰이 해커에 의해 탈취되었다고 간주해서 모든 토큰을 삭제하는 원리인데, 조금 더 안전한 방법도 Username 은 일치하지만 토큰이 다르면 똑같이 탈취되었다고 간주하고 모든 토큰을 삭제하면 동일하게 동작하지 않을까 하는 궁금증이 생겼습니다. 전자랑 후자 방법 둘다 해싱에 패스워드는 사용되지 않아서 복호화 된다고해도 계정이 탈취당하는 일이 없는데 굳이 시리즈를 이용하는 이유가 있을까요??
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
DB 조회를 통한 사용자 정보 참조
안녕하십니까 강사님! 질문있습니다 :) 강의를 보기전에 이번 실습에서의 제목 "현재 인증된 사용자 정보 참조" 를 보고 제가 직접 구현해 본 코드입니다. 혹시 이 방법이 강의에서 구현한 방법과 코드나 성능적인 부분에서 안좋은 점이 있는 지 궁금합니다. (예를들면 DB 를 조회하는 부분이 있기 때문에 성능면에서 좀 더 안좋다 ?) 아니면 큰 차이가 없기 때문에 그냥 사용해도되는지도 궁금합니다.