[JPA Self Study] ThymeLeaf & SpringSecurity
SpringBootJpa 개발 | 6 DAY - 2
하다가 막히는 부분이나 알아야 할 사항, 혹은 버전의 문제 등을 적기 위한 간단한 노트이며
이는 공부용 소스이기 때문에 소스에 주석을 달아가며 설명을 적어뒀습니다.
따라서 해당 날짜의 소스를 보며 노트를 참고하는 식으로 봐야합니다.
소스는 깃헙에 올려놓았습니다.
Thymeleaf-extras-springsecurity5
타임리프에서 사용자의 권한이나 로그인 상태에 따라 버튼을 다르게 보여주기 위한 의존성 추가
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
타임리프에서 사용하기 위해선 아래처럼 선언해줘야 합니다.
<html lang="en"
xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<li class="nav-item" sec:authorize="!isAuthenticated()">
<a class="nav-link" th:href="@{/login}">로그인</a>
</li>
<a class="dropdown-item" th:href="@{'/profile/' + ${#authentication.name}}">프로필</a>
( org.thymeleaf.extras 참고 블로그 )[https://velog.io/@codren/thymeleaf-extras-springsecurity-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC]
프론트엔드 라이브러리 설정
써드파티 라이브러리는 직접 jar 라던가 js 라던가 하는 파일로 내려받아서 직접 static resource로 관리하는 것보다 의존성 관리 툴의 지원을 받아서 사용하는 걸 추천합니다.
- WebJar를 사용하는 방법
- pom.xml에 bootstrap 의존성을 추가하는 것
- NPM을 사용하는 방법
- npm install bootstrap을 통해 다운 받는 것
- 이때 다른 빌드툴이 빌드 할 때 프론트 쪽 모듈도 같이 빌드를 해야합니다. ( NPM install을 실행한다는 의미 )
- 빌드를 위한 플러그인
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.8.0</version>
<configuration>
<nodeVersion>v4.6.0</nodeVersion>
<workingDirectory>src/main/resources/static</workingDirectory>
</configuration>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<phase>generate-resources</phase>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
</executions>
</plugin>
spring-self-studySecurity 설정도 바꿔줘야 합니다
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations());
}
Spring Security 설정은 했었는데 왜 또 걸리냐면 StaticResourceLocation 클래스에 정의된 아래 경로의 파일이 아니면 걸립니다.
CSS(new String[]{"/css/**"}),
JAVA_SCRIPT(new String[]{"/js/**"}),
IMAGES(new String[]{"/images/**"}),
WEB_JARS(new String[]{"/webjars/**"}),
FAVICON(new String[]{"/favicon.*", "/*/icon-*"});
댓글남기기