어제에 이어서 스프링 시큐리티
이번엔 로그인 실패시 form에서 메시지가 뜨게 해보자,
<security:form-login> 요소에서 authentication-failure-url 속성은 /loginForm.html?ng=987로 설정,
=> 인증 실패 시 사용자를 다시 로그인 페이지로 리다이렉트하며, 쿼리 파라미터 ng=987를 함께 전달
${param.ng}는 서버로부터 전달받은 ng라는 이름의 파라미터 값
loginform c태그 써야하니까 당연 태그리브 추가!
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
이제 프로젝트 5번 만들자(원래 4번에 저 테스트 했어야하는데 잘못만들엇음...)
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
login.jsp 입니다.
<!-- pagecontext.request.userPrincipal : 요청한 사용자 객체 정보 -->
<c:if test="${not empty pageContext.request.userPrincipal}">
<p>is Log-in</p>
</c:if>
<c:if test="${empty pageContext.request.userPrincipal}">
<p>is Log-Out</p>
</c:if>
<!-- pagecontext.request.userPrincipal.name :사용자 아이디 -->
USER ID: ${pageContext.request.userPrincipal.name}<br>
<!-- pagecontext.request.contextPath : 프로젝트 경로 -->
<!-- j_spring_security_logout : spring security 에서 제공하는 로그아웃 =>homeController / 로 이동 -->
<a href="${pageContext.request.contextPath}/j_spring_security_logout">Log Out</a>
</body>
</html>
로그인 해보면?
user id 값(${pageContext.request.userPrincipal.name})을 받아오고 , logout링크를 누르면
j_spring_security_logout : spring security 에서 제공하는 로그아웃 =>homeController로 이동한다
프로젝트 6!
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!-- 보안 taglib -->
<!-- pom.xml의 dependency에 있는 spring-security-taglibs 추가되어야 사용가능 -->
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
login.jsp 입니다.
<!-- pagecontext.request.userPrincipal : 요청한 사용자 객체 정보 -->
<%-- <c:if test="${not empty pageContext.request.userPrincipal}"> --%>
<!-- <p>is Log-in</p> -->
<%-- </c:if> --%>
<%-- <c:if test="${empty pageContext.request.userPrincipal}"> --%>
<!-- <p>is Log-Out</p> -->
<%-- </c:if> --%>
<s:authorize ifAnyGranted="ROLE_USER">
<p>is log-in</p>
</s:authorize>
<s:authorize ifNotGranted="ROLE_USER">
<p>is log-Out</p>
</s:authorize>
<!-- pagecontext.request.userPrincipal.name :사용자 아이디 -->
<%-- USER ID: ${pageContext.request.userPrincipal.name}<br> --%>
USER ID: <s:authentication property="name"/><br>
<!-- pagecontext.request.contextPath : 프로젝트 경로 -->
<!-- j_spring_security_logout : spring security 에서 제공하는 로그아웃 =>homeController / 로 이동 -->
<a href="${pageContext.request.contextPath}/j_spring_security_logout">Log Out</a>
</body>
</html>
login.jsp를 저렇게 바꾸면
뭐 전에거랑 아무 차이없다. 역할이 똑같음
pom.xml에서
이 태그를 주석처리하고 다시 해본다면?
taglib가 사용 불가능해져 오류 발생/
'백 > spring' 카테고리의 다른 글
스프링부트의 트랜잭션, 스프링 jpa의 osiv전략 (0) | 2023.08.01 |
---|---|
스프링 기본파싱전략과 json통신 (0) | 2023.07.30 |
스프링 시큐리티 1 (0) | 2023.07.11 |
파일 업로드 부터 수정까지 (0) | 2023.06.28 |
트랜잭션이란!??!?!!?!??! (0) | 2023.06.22 |