์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๊ณต์ง์ ๋ํด ์ ์ ์ Role์ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
ํ๋กํ ํ์ ์ผ๋ก User DB์ isAdmin ์ผ๋ก if๋ฌธ์ ๊ฑธ์ด์ ๊ตฌํ์ ํ์ต๋๋ค.
Springboot security๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ๊ถํ์ ๊ด๋ฆฌ๋ฅผ ํ๊ฒ ์ต๋๋ค.
์๋์ Springboot security๋ Notice๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ถํ์๋ JWT๋ฅผ ์ ์ฉํ ์์ ์ ๋๋ค.
dependencies {
implementation "org.springframework.boot:spring-boot-starter-security"
}
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
// csrf๋ฅผ disable ํ์ต๋๋ค.
.csrf().disable()
.exceptionHandling()
.and()
.authorizeRequests()
// Notice์ Role์ ๊ฒ์ฌํฉ๋๋ค.
.antMatchers(HttpMethod.POST, "/api/v1/notices/notice").hasRole("ADMIN")
.antMatchers(HttpMethod.PUT, "/api/v1/notices/notice").hasRole("ADMIN")
.antMatchers(HttpMethod.DELETE, "/api/v1/notices/notice/**").hasRole("ADMIN")
.antMatchers(HttpMethod.GET, "/api/v1/notices/notice/**").hasAnyRole("ADMIN", "USER")
// Swagger์ ์ ๊ทผ์ permitALL() ํฉ๋๋ค.
.antMatchers("/v3/api-docs/**", "/swagger-ui/**").permitAll()
.anyRequest().permitAll()
.and()
// UsernamePasswordAuthenticationFilter ์ ์ ํํฐ๋ฅผ ์ ์ฉํฉ๋๋ค.
.apply(new UserAuthenticationConfig(userAuthenticationProvider))
.and()
.authenticationManager(userAuthenticationManager);
}
Github : CowAPI