Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ANTIFRAGILE
- 데이터내보내기
- IntelliJ
- git pat
- spring
- Python
- java
- 애널리틱스4
- db종류
- codeium
- 컬렉션프레임워크
- pat발급
- docker
- 명령어
- DBMS
- 도커이미지
- gtihub
- docker 명령어
- 티스토리챌린지
- JPA
- git branch 삭제
- 11월순위
- datagrip
- JPQL
- bigquery
- analytics4
- 르세라핌
- 오블완
- ci/cd
Archives
- Today
- Total
hanker
Spring Security (2) - 로그인, 로그아웃 설정 (xml) 본문
반응형
1. pom.xml 추가설정
<!-- 태그 라이브러리 추가 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${org.springframework-version}</version>
</dependency>
2. security-context.xml 설정 변경
<security:http use-expressions="true">
<security:intercept-url pattern="/login/loginForm" access="permitAll" />
<security:intercept-url pattern="/" access="hasRole('USER')" />
<security:intercept-url pattern="/admin/**" access="hasRole('ADMIN')" />
<security:form-login login-page="/login/loginForm" default-target-url="/"
authentication-failure-url="/login/loginForm?error"
username-parameter="id" password-parameter="password" />
<security:logout logout-url="/logout" logout-success-url="/login/loginForm" />
<security:access-denied-handler error-page="/login/accessDenied"/>
</security:http>
<!--
access= "permitAll" ( 누구나 접근 가능 )
"hasRole('ADMIN')" (ADMIN 권한을 가지고 있는 유저만 접근 가능)
"hasAnyRole('USER','ADMIN') (USER 또는 ADMIN 권한을 가지고 있는 유저는 접근 가능)
-->
<!--
login-page : 로그인 페이지 URL
default-target-url : 로그인 후 보여질 페이지
authentication-failure-url : 로그인 실패시 보여질 페이지
username-parameter : 아이디 입력 필드에 사용될 name
password-parameter : 비밀번호 입력 필드에 사용될 password
-->
<!--
logout-url : 로그아웃 페이지 URL
logout-success-url : 로그아웃에 성공하였을 때 보여질 페이지
-->
<!-- provider -->
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="user" password="password" authorities="ROLE_USER" />
<security:user name="admin" password="password" authorities="ROLE_ADMIN" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
현재 프로젝트 구조
화면은 무료 템플릿을 사용을 하겠습니다.
home.jsp
링크를 누르시면 무료로 다운받을 수 있습니다.
loginForm.jsp
https://colorlib.com/wp/template/login-form-v1/
링크를 누르시면 무료로 다운받을 수 있습니다.
3. loginForm.jsp 수정
- security-context.xml에 설정한 대로 name값 변경
- jsp 상단에 c태그, form태그 사용을 위한 소스 추가
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
4. /login/loginForm , /home 접속을 위한 Controller 설정
- LoginController 작성
@RequestMapping(value="/login/loginForm", method=RequestMethod.GET)
public void getLoginForm() throws Exception{
}
@RequestMapping(value="/login/loginForm", method=RequestMethod.POST)
public String postLoginForm() throws Exception{
return "login/loginForm";
}
- HomeController
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
return "home";
}
이제 화면 UI를 확인해보면
<login/loginForm>
화면이 나오고 security-context에서 설정한 id, password 입력후 login 버튼 클릭
로그인이 성공하면
다운로드 받았던 템플릿 화면으로 이동
로그아웃 설정
5.home.jsp
<style>
#loginOut{
top: 40px;
right: 40px;
position: absolute;
background: transparent;
outline:none;
border:none;
color:white;
}
</style>
<!-- 로그인 Style 지정 -->
<body>
<div id="header-wrapper">
<sec:authorize access="isAnonymous()">
<p><a href="<c:url value="/login/loginForm" />" id="loginOut" >로그인</a></p>
</sec:authorize>
<sec:authorize access="isAuthenticated()">
<form:form action="${pageContext.request.contextPath }/logout" method="POST">
<input type = "submit" id="loginOut" value="로그아웃" />
</form:form>
</sec:authorize>
<!-- 이하생략 -->
다음 글 - Spring security DB 연동 / 관리
반응형
'SPRING' 카테고리의 다른 글
SPRING - mybatis에서 resultType=boolean 사용하기 (0) | 2020.11.02 |
---|---|
SPRING - openlayers 지도보기, mouseOver 좌표확인 (0) | 2020.08.19 |
SPRING - VO클래스 alias 설정 (0) | 2020.08.18 |
Spring Security (3) - JDBC 설정 (xml) (0) | 2020.08.15 |
Spring Security (1) - 기본 설정 (xml) (0) | 2020.08.13 |