SecurityContextHolder.getContext().setAuthentication(authentication);
546
작성한 질문수 2
안녕하세요
SecurityContextHolder.getContext().setAuthentication(authentication);
이게 doFilter에도 있고 로그인할 때도 있는데 이 둘의 차이가 뭔가요??
예를 들어 특정 사용자의 토큰을 프론트에서 넘겨줄 때 토큰에 들어있는 정보를 가져와서 그것을 이용해서 데이터베이스에서 사용자 조회를 사고 그 사용자 정보를 바탕으로 특정작업을 처리할 때
SecurityContextHolder.getContext().getAuthentication().getName(); 이런 식으로 처리하는 것으로 아는데 이렇게 가져오는 건 어디서 저장되어있는 것을 가져오는 건가요?? session방식이 아니기 때문에 서버에 저장하는 것 같지는 않은데요,..
답변 2
1
안녕하세요 답변이 늦어 죄송합니다.
doFilter에서 setAuthentication 하는 부분은 헤더에 토큰이 있는 경우이고,
로그인 요청 시 에는 헤더에 토큰이 없기 때문에 doFilter에서는 해당 부분을 수행하지 않고
setAuthentication 하는 부분은 로그인 생성 후에 토큰을 스레드 내 인증정보의 저장소 역할을 하는 SecurityContextHolder에 저장하고 사용하게 됩니다.
쉽게 풀어서 설명드리자면
Spring으로 요청이 들어왔을때 헤더의 인증정보를 스레드 내 저장소에 담아놓고 해당 스레드에서 필요 시 꺼내서 사용한다고 이해하시면 될 것 같습니다.
0
로그인할 때 setAuthentication 하는 이유가 먼가요?
어차피 세션이 stateless 인데, 로그인은 그냥 토큰만 주면 끝나는 거고, setAuthentication 할 필요가 없지 않나요? 로그인 뒤에 헤더에 토큰 달고 오는 요청은 doFilter 에서 setAuthentication 되니까요
0
저도 궁금해서 생각해봤는데
프론트쪽이 있을때
만약 시작페이지에 로그인이 있고 그 구역이 비동기로 동작한다면
로그인을 하게되면 "누구누구님 환영합니다" 이러한 문구가 필요한 부분에서 사용되지 않을까요??
로그인 즉시 필요한 곳에서 사용될거 같은데
잘모르지만 답변남겨봅니다..
spring boot 3.x 버전 강의도 만들어주시면 안될까요?
0
85
1
3강 secret key 관련해서 질문있습니다
0
76
1
JwtFilter 에 TokenProvider 선언 시 final 키워드 빠진 이유
0
92
1
/api/authenticate 포스트맨 401 에러
0
242
1
Spring boot 3.x버전에서 data.sql 오류 발생할 경우
4
416
1
/api/hello 접근 시 401 나올 때 해결법
2
319
2
소스코드 전체 볼수 있을까요?
0
404
2
머이렇게 안되는게많노 ㅠ
1
775
2
스프링부트 3.x 버전 data.sql 삽입 오류 발생할 경우 해결 방법
6
1367
2
postman 결과가 다릅니다
0
375
2
body값이 비었습니다.
0
407
2
jjwt 버전을 올렸더니 jwt가 유효하지 않다고 합니다
0
3621
1
Refresh Token
0
522
1
유저 권한 설정
0
378
2
setAuthentication
0
506
1
postman에서 오류가 납니다..
0
1779
3
Spring boot 3.1.5 기준 학습 정리 파일 공유
1
1104
4
/api/hello에 접근이 안됩니다 ㅠㅠ
0
1095
2
mysql 설정로 실습시
0
891
2
유효한 JWT 토큰이 없습니다
0
677
2
8:45 spring security 3.1.5 설정 방법 (버전 안 맞춰서 안될때)
1
2290
2
2:00 에서 저처럼 버전 안 맞춰서 해서 헤매는 분들 이걸로 해보세요.
0
1286
3
JWT String argument cannot be null or empty.
0
2179
2
new User 생성자 오류 발생하는 분들...
6
510
2





