๐ฅ ๋ง์ด๋ฐํฐ์ค, ์ธํฐ์ ํฐ, ๋น์ค์ฝํ 27๊ฐ (18๊ฐ-26๊ฐ SKIP)
1๏ธโฃ ์ธํฐ์ ํฐ๋ฅผ ํ์ฉํ ๊ด๋ฆฌ์ ํ์ด์ง ๋ง๋ค๊ธฐ (์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ํตํด์๋ ๊ฐ๋ฅ)
โ ๊ด๋ฆฌ์์ฉ html ํ์ผ ์์ฑ ๋ฐ Controller ์์ฑ
โก ๊ด๋ฆฌ์์ธ์ง ํ์ธํ๋ ์ธํฐ์ ํฐ ์์ฑ
@Component
@RequiredArgsConstructor
public class NeedToAdminInterceptor implements HandlerInterceptor {
private final Rq rq;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (rq.isAdmin() == false) {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
response.getWriter().append("๊ด๋ฆฌ์๋ง ์ด์ฉํ ์ ์์ต๋๋ค.");
return false;
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}
}
โข ์ธํฐ์ ํฐ ์๋์ ํ์ํ ํจ์๋ฅผ Rq ์ ๊ตฌํ
@Component
@RequestScope
@RequiredArgsConstructor
public class Rq {
// ์๋ต
public boolean isAdmin() {
if (isLogout()) return false;
return getLoginedMember().hasRole("ADMIN");
}
}
โฃ Member DTO ์ hasRole() ๋ฉ์๋ ๊ตฌํ (Stream ํ์ฉ)
@Getter
@Builder
public class Member {
// ์๋ต
public boolean hasRole(String role) { // ์ํ๋ ๊ถํ์ด ์๋์ง ํ์ธ
return Arrays
.stream(roles.split(","))
.anyMatch(role_ -> role_.equals(role));
}
}
โค ์ธํฐ์ ํฐ ๋ฑ๋ก
@Configuration
@RequiredArgsConstructor
public class WebMvcConfig implements WebMvcConfigurer {
private final NeedToAdminInterceptor needToAdminInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
InterceptorRegistration ir;
ir = registry.addInterceptor(beforeActionInterceptor);
ir = registry.addInterceptor(needToAdminInterceptor); // ์ถ๊ฐ
ir.addPathPatterns("/admin/**"); // admin ์ ์ ๊ทผํ๋ ๋ชจ๋ ๊ฒฝ๋ก์ ํด๋น
}
}
โฅ ๊ฒฐ๊ณผ ํ์ธ


'TIL ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| TIL (2024.06.06) (0) | 2024.06.07 |
|---|---|
| TIL (2024.06.05) (1) | 2024.06.05 |
| TIL 23์ผ์ฐจ (2022.12.29) (0) | 2023.01.02 |
| TIL 22์ผ์ฐจ (2022.12.03) (1) | 2022.12.03 |
| TIL 21์ผ์ฐจ (2022.11.08) (0) | 2022.11.08 |