이제 슬슬 인증에 필요한 설정도 해야되서 인프런에 무료인강이 있길래 참고했다
먼저 이제 인증에 필요한 회원(User)테이블과 매핑할 도메인도 필요하니께 만들어주었다.
@Entity
@Getter
@NoArgsConstructor
public class User extends BaseEntity{
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userId;
private String fullName;
private String password;
private String email;
private String address;
private String profileUrl;
private String accessToken;
private String roles;
public List<String> getRoleList(){
if(this.roles.length() > 0){
return Arrays.asList(this.roles.split(","));
}
return new ArrayList<>();
}
}
roles 같은경우 데이터 값이 USER,ADMIN 이런식으로 들어가도록 하려고해서 가져온담에 스플릿으로 리스트화 시키려고 getRoleList 메소드를 생성했다.
컬럼은 변동사항이 생길가능성이 많아서 일단 스킵
그다음 Security사용을 위해 라이브러리를 build.gradle에 추가한다.
implementation 'org.springframework.boot:spring-boot-starter-security'
@Configuration
public class CorsWebConfig implements WebMvcConfigurer {
@Bean
public CorsFilter corsFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**",config);
return new CorsFilter(source);
}
}
그다음 예전에 해두었던 cors설정을 수정하였다.
시큐리티에서 필터를 등록하여 인증이 있던없던 그냥 모두 필터를거쳐서 다 허용하도록 CorsFilter를 빈으로 등록하였고 이전 로직은 제거했다.
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final CorsFilter corsFilter;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.addFilter(corsFilter)
.formLogin().disable()
.httpBasic().disable()
.authorizeRequests()
.antMatchers("/user/**").access("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
.anyRequest().permitAll();
}
}
여기가 좀 중요한데 일단 api 통신이기때문에 session을 쓰지않겠다고 명시하였고 폼로그인도 역시 필요가없다
Http basic : Auth 기반으로 로그인 인증창이 뜸. 기본 인증 로그인을 이용하지 않으니 이것도 비활성화해준다
마지막으로 일단 인증관련로직은 /user라는 path를 주는것으로 가정하고 이것들을 제외하면 다 요청을 허용해주는것으로 설정하였다.
그후 직전 만들어뒀던 cors필터를 등록한다.
security로 간단한 인증은 해본경험이있어서 이정도까진 이해가가는데 jwt가 적용되면서 부터좀 복잡해질거같다. 끝
'Project > MangoPlate Clone' 카테고리의 다른 글
Jwt 토큰 예외처리 (0) | 2023.03.09 |
---|---|
Jwt 기본 세팅 (0) | 2023.03.03 |
리뷰 및 메뉴 페이징 목록 구현 (1) | 2023.02.27 |
EhCache 설정 (0) | 2023.02.24 |
JPA Auditing 설정 (0) | 2023.02.24 |