๋ฐ์ํ
ADMIN ๊ณ์ ๋ง ์ ๊ทผํ ์ ์๋๋ก ์ค์
๐ ์ํ ๋ฑ๋ก, ์์ , ์ญ์ ํ์ด์ง ๋ฑ๋ฑ
CustomAuththenticationEntryPoint
public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
}
}
๐โ๏ธ ์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์๊ฐ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ Unauthorized
์๋ฌ๋ฅผ ๋ฐ์์ํค๋๋ก Authentication EntryPoint
์ธํฐํ์ด์ค ๊ตฌํ
SecurityConfig ์์
antMatcher์ mvcMatchers
์ผ๋ฐ์ ์ผ๋ก mvcMatcher๋ antMatcher๋ณด๋ค ์์ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ ์ผ๋ฐ์ ์ด๋ฉฐ ์ผ๋ถ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์ค์๋ฅผ ์ฒ๋ฆฌ ํ ์๋ ์์ต๋๋ค.
antMatchers("/secured")๋ ์ ํํ /secured URL๊ณผ๋ง ์ผ์นํ๊ณ ,
mvcMatchers("/secured")๋ /secured์ /secured/, /secured.html, /secured.xyz ๋ฑ ๊ณผ๋ ์ผ์นํฉ๋๋ค.
http
.authorizeRequests()
.mvcMatchers("/", "/css/**", "/images/**", "/js/**", "/h2-console/**", "/member/**").permitAll()
.mvcMatchers("/", "/members/**", "/items/**").permitAll()
.mvcMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated();
anyRequest()
: ์ค์ ๋ ๊ฐ๋ค ์ด์ธ ๋๋จธ์ง URL๋ค์ ๋ํ๋
๐โ๏ธ ์ฌ๊ธฐ์๋authenticated()
์ ์ถ๊ฐํ์ฌ ๋๋จธ์ง URL๋ค์ ๋ชจ๋ ์ธ์ฆ๋(๋ก๊ทธ์ธํ) ์ฌ์ฉ์๋ค์๊ฒ๋ง ํ์ฉํ๊ฒ ๋ฉ๋๋ค.
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web
.ignoring()
.antMatchers("/css/**", "/js/**", "/images/**");
}
- static ํ์ ํ์ผ์ ์ธ์ฆ์ ๋ฌด์ํ๋๋ก ์ค์
๊ถํ ์ค์ ํ ์คํธ
๊ด๋ฆฌ์ ๊ณ์ ์ ๊ทผ ํ ์คํธ
@SpringBootTest
@AutoConfigureMockMvc
@TestPropertySource(locations = "classpath:application-test.properties")
class ItemControllerTest {
@Autowired
MockMvc mockMvc;
@Test
@WithMockUser(username = "admin", roles = "ADMIN")
void ๊ด๋ฆฌ์_๊ถํ_ํ์ด์ง_์ ๊ทผ_ํ
์คํธ() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/admin/item/new"))
.andDo(print())
.andExpect(status().isOk());
}
}
์ผ๋ฐ ์ ์ ์ ๊ทผ ์ ํ ํ ์คํธ
@Test
@WithMockUser(username = "user", roles = "USER")
void ์ผ๋ฐ_์ ์ _์ ๊ทผ_์ ํ_ํ
์คํธ() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/admin/item/new"))
.andDo(print())
.andExpect(status().isForbidden());
}
728x90
๋ฐ์ํ
'์คํ๋ง > ์ผํ๋ชฐ ํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์์์ฑ ์ ์ด (0) | 2022.11.26 |
---|---|
์ฐ๊ด ๊ด๊ณ ๋งคํ (0) | 2022.11.25 |
์ํ ์ค๊ณ ๋ฐ ๋ฑ๋กํ๊ธฐ (0) | 2022.11.24 |
ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ (0) | 2022.11.22 |
๋น๋ ํจํด (0) | 2022.11.21 |