@3/19/2023
๊ฐ์
โข
ํค๋๋ฅผ ๋ ์ด์์(Thymeleaf fragment)์ ํตํด ๊ณตํตํ ์ํจ ์ํฉ์์, ๋ก๊ทธ์ธ ์ฌ๋ถ๋ ํ์ด์ง์ ๋ฐ๋ผ ํค๋ ๋ฒํผ์ด ๋ฌ๋ผ์ ธ์ผ ํจ
โฆ
๋น ๋ก๊ทธ์ธ ์ํ - ๋ก๊ทธ์ธ, ํ์๊ฐ์
โฆ
๋ก๊ทธ์ธ ์ํ - ๋ก๊ทธ์์, ํ์ ์ ๋ณด
โฆ
๋ก๊ทธ์ธ ํ๋ฉด - ์๋ฌด๊ฒ๋ ์์
โข
์คํ๋ง ๋ถํธ 3.0๋ถํฐ ๋ณด์์ ์ด์ ๋ก #session ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ด์ง. ๋ฐ๋ผ์ ๋๋ 2๋ฒ์ ์ด์ง๋ง ์ฌ์ฉํ์ง ์๊ณ ๊ตฌํํ๊ธฐ๋ก ํจ
โฆ
ํ์ง๋ง ์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ ์ปจํธ๋กค๋ฌ๋ง๋ค model์ ๋ฒํผ์ ๋ณด์ฌ์ค ์กฐ๊ฑด์ ๊ดํ ์์ฑ์ ์ค์ ํด์ค์ผ ํจ
โฆ
์ฐพ์๋ณด๋ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ๋ง์ด ์ฌ์ฉํจ
โฆ
๋๋ ์คํ๋ง ์ธํฐ์
ํฐ๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ๊ธฐ๋ก ํจ
์ธํฐ์ ํฐ
โข
๋ชจ๋ ์์ฒญ๋ณ๋ก ์ธ์
์ ๋ค์ ธ์ ๋ก๊ทธ์ธ ์ ๋ณด ํ์ธ
โฆ
์ถํ์ ๋น ๋ก๊ทธ์ธ ์ฌ์ฉ์๋ ๋ณผ ์ ์๋ ํ๋ฉด์๋ง ์ค์ ์์
โช
๋ก๊ทธ์ธ ์ฌ์ฉ์๋ง ๋ณผ ์ ์๋ ํ๋ฉด์ ๋ณ๋ ์ธํฐ์
ํฐ ์ค์
โข
์ด ๋ก์ง์ ๋ก๊ทธ์ธ์ ์๊ตฌํ๋ ํ์ด์ง์์ ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ก์ง๊ณผ ๋น์ทํ์ง๋ง, ๋น ๋ก๊ทธ์ธ ์ ์ ๋ ๋ณผ ์ ์๋ ํ์ด์ง์ ๋ํด์ ์ ์ฉ๋๋ค๋ ์ฐจ์ด์ ์ด ์์. ์ ์๋ postHandle, ํ์๋ preHandle
โฆ
๋ก๊ทธ์ธ ์ ๋ณด๊ฐ ์์ผ๋ฉด isLoggedIn ์์ฑ์ false ์๋๋ฉด true
public class LoginInterceptor implements HandlerInterceptor {
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
HttpSession session = request.getSession(false);
if (session == null || session.getAttribute("loginUser") == null) {
request.setAttribute("isLoggedIn", false);
} else {
request.setAttribute("isLoggedIn", true);
}
}
}
Java
๋ณต์ฌ
โข
์ธํฐ์
ํฐ ๋ฑ๋ก(webConfig)
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.order(1)
.addPathPatterns("/**");
}
}
Java
๋ณต์ฌ
๋ทฐ(ํ์๋ฆฌํ)
<a th:unless="${#objects.nullSafe(hideLoginButtons, false) or isLoggedIn}" type="button" class="btn btn-outline-primary ms-auto" href="/users/login">๋ก๊ทธ์ธ</a>
<a th:unless="${#objects.nullSafe(hideLoginButtons, false) or isLoggedIn}" type="button" class="btn btn-primary ms-2" href="#">ํ์๊ฐ์
</a>
<a th:if="${isLoggedIn}" type="button" class="btn btn-outline-secondary ms-auto" href="/users/logout">๋ก๊ทธ์์</a>
<a th:if="${isLoggedIn}" type="button" class="btn btn-outline-primary ms-2" href="#">๋ด ์ ๋ณด</a>
HTML
๋ณต์ฌ
โข
hideLoginButtons
๊ฒฐ๊ณผ ํ๋ฉด
โข
๋ก๊ทธ์ธ ์
โข
๋ก๊ทธ์ธ ํ๋ฉด
โข
๋ก๊ทธ์ธ ํ