inflearn logo
강의

講義

知識共有

SpringとJPAベースのWebアプリケーション開発

現在認証されたユーザー情報参照

Authentication should not be null 오류 질문

1395

Heeah

投稿した質問数 1

2

안녕하세요. 백기선님. 좋은 강의 감사합니다.
강의를 따라가다 Authentication 오류 해결에 어려움을 겪고 있어 질문드립니다.
test소스 authenticated()에서는 Authentication should not be null 에러가 발생하고 뷰단에서도 isAuthenticated() 체크되지 않습니다. 디버깅을 해보면 UsernamePasswordAuthenticationToken 생성 이후 Authentication 객체가 만들어진 것은 확인을 했는데, 어느 시점에서 객체를 못가져오고 null이 찍힙니다.

Screenshot 2023-04-18 at 5.41.19 PM.jpegScreenshot 2023-04-18 at 5.01.08 PM.jpeg

스프링시큐리티에 대한 지식이 없어 그런지 난감합니다. 도움주시면 감사하겠습니다.
Spring-Security6 사용중입니다.

java spring spring-boot jpa thymeleaf

回答 4

3

jyp123

Security6 를 사용하는 경우 아래와 같이 하시면 동작합니다

// Service class
private final SecurityContextHolderStrategy securityContextHolderStrategy;
private final SecurityContextRepository securityContextRepository;

public void login(Account account, HttpServletRequest request, HttpServletResponse response) {
   account.login(clockHolder);
   UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
      account.getNickname(),
      account.getPassword(),
      Collections.singleton(new SimpleGrantedAuthority("ROLE_USER")));
   SecurityContext context = securityContextHolderStrategy.createEmptyContext();
   context.setAuthentication(token);
   securityContextHolderStrategy.setContext(context);
   securityContextRepository.saveContext(context, request, response);
}

// Security Config class
@Bean
public SecurityContextHolderStrategy securityContextHolderStrategy() {
  return SecurityContextHolder.getContextHolderStrategy();
}

@Bean
public SecurityContextRepository securityContextRepository() {
  return new HttpSessionSecurityContextRepository();
}

시큐리티6 부터 모든 요청에 대해 세션을 사용하지 않아, 사용자 정보를 저장할 수 없는 것 같습니다.
아래 문서에서 수동으로 사용자 정보를 저장하는 방법이 있어 참고했습니다.

 

참고 : https://docs.spring.io/spring-security/reference/servlet/authentication/session-management.html

 

 

0

kdm8939

해결 하셨나요... 아직도 해결못하고있네요

html에서 sec 관련 사용이 안되네요..

디버깅하면 리다이렉트 전까지 SecurityContext에 담겨있는데 말이죠..

0

kdm8939

저는 일단...
제대로된 정보는 아니지만
redirect 하면 인증정보를 유지하지 않고 null로 초기화한다네요..?

일단 index로 넘기는 GetMapping 만들어서 리턴시키는걸로 해결은 되었습니다.

0

jjeovi

저도 현재 이 문제 떄문에 스트레스받으며 구글링중이랍니다 ㅋㅋㅋㅋㅋ 백선생님의 현명한답변을 기다리고있지만 조용하시네용 ㅠ

0

whiteship

흠.. 테스트 코드면 아마도 테스트용 인증 객체를 가짜로 설정하는 부분이 있을텐데 @WithAccount("keesun") 와 같은 코드가 제대로 동작하는지 디버깅을 해보셔야 할 것 같습니다.

Study 개설하는 로직에 대해서 궁금점이 있습니다.

0

55

1

앱 재시작 후 회원가입

0

103

1

app.host 관련 질문이 있습니다

0

97

1

강의 버전 정보

0

125

1

event, study 참조

0

220

2

비밀번호 변경 로직 질문있습니다.

0

135

1

프로필 수정 처리 merge 질문입니다.

0

108

1

회원가입 성공 후 redirect이동시 권한 질문

0

494

3

HtmlEmailService 개발하다 생긴 의문입니다

0

250

2

postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다

0

431

2

수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다

0

261

2

[긴급-재업로드]수업질문 로그인 안 되는 문제

0

236

1

[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요

0

277

1

cropper 오류 문제로 질문드립니다..

0

288

2

authentication관련 질문...

0

495

2

모임참가 취소 할때 로직 질문

0

350

3

안녕하세요 기선님 질문이있습니다..

0

229

1

HTML코드 및 강의 중간자료들

0

679

3

springSecurity

0

523

2

버전 질문입니다.

0

302

1

부트스트랩, css

0

354

2

영속성 컨텍스트 질문

0

248

2

다시 강의를 보니 드는생각..

0

352

2

5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?

0

313

1