Spring Boot(Security login #1)
시큐리티 로그인을 하기 위해서는 Pom.xml 수정이 필요하다.
#1 pom.xml 수정 (dependency 추가)
<!-- 추가 라이브러리 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
dependency를 추가하고 서버를 돌리면 메인 페이지로 가려고 하는데, url에 자동으로 /login으로 매핑되어 이상한 로그인 페이지로 이동한다.
이유는 바로, Spring security가 가로채서 이 화면으로 자동으로 가게 만들어놨기 때문(username은 user Password는 콘솔창에 띄워지는 해쉬 Password를 사용하면 원하는 메인페이지로 이동이 가능하다)
이를 통해서 알 수 있는건 Spring security가 우리 사이트의 모든 대문을 닫아버렸다는 것이다.
우리는 이것을 이용해서 Spring security 로그인을 구현할것이다!
Introduction to Spring Security Taglibs | Baeldung
Learn how to use Spring Security's tag library in your JSPs for finer-grained control of your views.
www.baeldung.com
위의 사이트에 접속하여 아래의 코드를 복사한 후 header.jsp 최상단에 위치힌다.
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
필자의 head.jsp를 캡처한 사진인데, taglib을 최상단에 위치시키면 되고 중요한점은
<sec: authorize access = "isAuthenticated()">
태그를 통해서 principal 이라는 변수명으로 현재 current user에 접근할 수 있는 것을 저장한다.
(property = "principal"의 역할로 direct로 allow할 수 있게 되었음.)
API Document 문서 참고하시길 바라겠습니다!
15. Expression-Based Access Control
There are some built-in expressions which are specific to method security, which we have already seen in use above. The filterTarget and returnValue values are simple enough, but the use of the hasPermission() expression warrants a closer look. The Permiss
docs.spring.io
그럼 이제 jstl c:<태그>를 통해서 Spring이 자동으로 생성해준 세션을 통해서 로그인을 해주면 된다.
여기까지 작업했다면 Security login#1 작업을 성공적을 마친것이다.
Security login는 굉장히 복잡하고 많은 개념들을 내포하고 있기 때문에 총 #4까지 진행 할 것이고
앞으로 구현할 것은 다음과 같다.
- Spring의 내장되어 있는 login 페이지를 커스터마이징해서 내것으로 만들것이다.
- SecurityConfig를 통해서.antMatchers("/","/auth/**","/js/**","/css/**","/image/**")의 인가된 주소들만 우리의 페이지에 접근할 수 있게 구현할 것이다.