스프링 시큐리티 질문

스프링 시큐리티 질문

작성일 2024.04.15댓글 1건
    게시물 수정 , 삭제는 로그인 필요

안녕하세요 이번에 프로젝트에서 JWT 로그인 부분을 맡게 되어서
스프링 시큐리티를 공부하며 프로젝트를 하고 있는 도중 문제가 생겨 질문합니다.

현재 문제점이

JWT 토큰을 발급하며 로그인을 한 후
로그인 한 상태로 게시판을 들어가면 그 게시판을 불러오지 못합니다.
에러 메세지는 Authority(권한)이 null이여서 불러오지 못한다고 하는데,
제가 만드는 사이트는 지금 관리자 개념이 필요가 없고 로그인 한 사용자만 필요해서
Role을 설정을 안했는데 그래서 에러가 발생하는건가요??

Security Config 파일입니다.

@Configuration
@EnableWebSecurity
@RequiredArgsConstructor

public class SecurityConfig {

//AuthenticationManager가 인자로 받을 AuthenticationConfiguraion 객체 생성자 주입
private final AuthenticationConfiguration authenticationConfiguration;
private final JwtTokenProvider jwtTokenProvider;

@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration configuration) throws Exception {

return configuration.getAuthenticationManager();
}

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
// csrf disable => csrf protect disable
http
.csrf(AbstractHttpConfigurer::disable)
// form 로그인 방식 disable
.formLogin(AbstractHttpConfigurer::disable)
// http basic 인증 방식 disable
.httpBasic(AbstractHttpConfigurer::disable)
// 경로별 인가 작업 - 모든 경로 경로 인가 해줌
.authorizeHttpRequests((request) -> request.requestMatchers("/user/**").permitAll().requestMatchers("/algorithm/**").authenticated())
// user 경로를 통한 경로는 전부다 허용, algorithm 부분은 로그인을 해야지 들어갈 수 있음

// add at 은 원하는 자리에 등록
// add before은 해당하는 필터 이전에 등록
// add after는 이후에
.addFilterBefore(new JwtAuthenticationFilter(jwtTokenProvider), UsernamePasswordAuthenticationFilter.class)
// 필터를 등록한다. LoginFilter를 등록하는데 매개변수로 Manage가 들어가야한다. => bean 등록 필요
// 세션 설정
.sessionManagement((session) -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
return http.build();
}
}

여기 보시면 

.authorizeHttpRequests((request) -> request.requestMatchers("/user/**").
permitAll().requestMatchers("/algorithm/**").authenticated())

permitAll()을 통해 Role이 필요 없이 인가된 사용자만 algorithm 게시판을 불러올수 있게 하였는데
왜 작동이 안되는지를 모르겠습니다.


import lombok.Builder;
import lombok.Data;
import java.util.Date;

@Data
@Builder
public class UserDto {
private String userId;
private String password;
private String name;
private Date birth;
private String gender;
private String email;
private Date createdAt;
}

이건 UserDto입니다.

알려주시면 정말 감사합니다..


#스프링 시큐리티 #스프링 시큐리티 로그인 #스프링 시큐리티 jwt #스프링 시큐리티 로그인 페이지 없애기 #스프링 시큐리티 쓰는 이유 #스프링 시큐리티 로그인 구현 #스프링 시큐리티 jwt 로그인 #스프링 시큐리티 로그아웃 #스프링 시큐리티 oauth2 #스프링 시큐리티 인 액션

profile_image 익명 작성일 -

1. Authorization Header에 JWT 토큰이 담겨져있는지 확인

2. 인증객체를 만들때, ROLE이 제대로 지정이 되었는지 확인.

개인 프로젝트

... 언어 - 스프링 시큐리티 - mysql - jpa *프로젝트 주제 - 게시판(crud) 기능 : 회원관리... 개발에 대한 질문이나 의견을 나눌 수 있는 곳을 찾아서 활용해 보세요. 프로젝트 관리...

jsp 질문드립니다

... 스프링 시큐리티 사용중이시면 관련 jstl 을 임포트하고 권한체크를 하시면 될거 같구 아니면 userVo에 권한관련 변수 지정해서 그값 체크하면 되지 않을까...

웹개발과 spring 설정과 그외 질문입니다

... 4.스프링 시큐리티는 선택이 아닌 필수인가요? 기존에 세션으로 로그인처리를... 추상적인 질문이긴 한데 현업에서 웹사이트 하나를 개발하고 관리자단을 만든다고...

대전에 구형 쏘렌토 이쁘게...

... 타이어, 스프링이나, 쇼바 바꾸고, 부싱갈고 네비... 질문이 너무 많았나?! ㅎㅎ 부탁드려요!!!!!! 대전이시면... 실내등 + 시큐리티 ) ※실외※( 사이드리피터...



    test ad