티스토리 뷰
🎆🎈🎇🎠🎡🎢
환상의~ 나라로 오세 요~♪(´▽`)
pom.xml
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.6.3</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.6.3</version>
</dependency>
web.xml
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml
/WEB-INF/spring/security-context.xml</param-value>
</context-param>
security-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
https://www.springframework.org/schema/security/spring-security.xsd">
<http use-expressions="true">
<intercept-url pattern="/books/add" access="hasAuthority('ROLE_ADMIN')" />
<form-login/>
<csrf/>
<logout/>
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="Admin" password="{noop}Admin1234" authorities="ROLE_ADMIN"/>
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
/bookmarket/books/add를 url 주소창에 넣으면
아래 login 창으로 이동한다.
8.4.3 스프링 시큐리티 태그로 로그인 페이지 구현하기
security-context.xml
<http use-expressions="true">
<intercept-url pattern="/books/add" access="hasAuthority('ROLE_ADMIN')" />
<form-login login-page="/login"
default-target-url="/books/add"
authentication-failure-url="/loginfailed"
username-parameter="username"
password-parameter="password"/>
<csrf/>
<logout />
</http>
LoginController.java
package com.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class LoginController {
@GetMapping("/login")
public String login() {
return "login";
}
@GetMapping("/loginfailed")
public String loginerror(Model model) {
model.addAttribute("error", "true");
return "login";
}
}
login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<link href="<c:url value="/resources/css/bootstrap.min.css"/>"rel="stylesheet" />
<meta charset="utf-8">
<title>로그인</title>
</head>
<body>
<nav class="navbar-expand navbar-dark bg-dark">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="./home">Home</a>
</div>
</div>
</nav>
<div class="jumbotron">
<div class="container">
<h1 class="display-3">로그인</h1>
</div>
</div>
<div class="container col-md-4">
<div class="text-center">
<h3 class="form-siginin-heading">Please login</h3>
</div>
<c:if test="${not empty error }">
<div class="alert alert-danger">
UserName과 Password가 올바르지 않습니다.<br />
</div>
</c:if>
<form class="form-signin" action="<c:url value="/login"/>" method="post">
<div class="form-group row">
<input type="text" name="username" class="form-control" placeholder="User Name" required autofocus>
</div>
<div class="form-group row">
<input type="password" name="password" class="form-control" placeholder="Password" required>
</div>
<div class="form-group row">
<button class="btn btn-lg btn-success btn-block" type="submit">로그인</button>
<input type="hidden" name="${_csrf.parameterName }" value="${_csrf.token }" />
</div>
</form>
</div>
</body>
</html>
/books/add 로 이동
8.4.4 스프링 시큐리티 태그로 로그아웃 페이지 구현하기
security-context.xml
<http use-expressions="true">
<intercept-url pattern="/books/add" access="hasAuthority('ROLE_ADMIN')" />
<form-login login-page="/login"
default-target-url="/books/add"
authentication-failure-url="/loginfailed"
username-parameter="username"
password-parameter="password"/>
<csrf/>
<logout logout-success-url="/logout"/>
</http>
LoginController.java
package com.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class LoginController {
@GetMapping("/login")
public String login() {
return "login";
}
@GetMapping("/loginfailed")
public String loginerror(Model model) {
model.addAttribute("error", "true");
return "login";
}
@GetMapping("/logout")
public String logout(Model model) {
return "login";
}
}
addBook.jsp +추가 구문
<link href="<c:url value="/resources/css/bootstrap.min.css"/>"rel="stylesheet" />
<title>도서 등록</title>
</head>
<body>
<nav class="navbar navbar-expand navbar-dark bg-dark">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="./home">Home</a>
</div>
</div>
</nav>
<div class="jumbotron">
<div class="container">
<h1 class="display-3">도서 등록</h1>
</div>
</div>
<div class="container">
<div class="float-right">
<form:form action="${pageContext.request.contextPath }/logout" method="post">
<input type="submit" class="btn btn-sm btn-success" value="Logout" />
</form:form>
</div>
<br><br>
<form:form modelAttribute="NewBook" class="form-horizontal">
'코딩 > spring' 카테고리의 다른 글
[16주 2일차] 파일 업로드 처리 : 이미지 파일 업로드하기 (0) | 2024.01.23 |
---|---|
[16주 2일차] 파일 업로드 처리 (1) | 2024.01.23 |
[16주 1일차] 스프링 시큐리티 (0) | 2024.01.22 |
[15주 5일차] 스프링 폼 태그 (0) | 2024.01.19 |
[15주 5일차] 스프링 폼 태그 : 도서 등록 페이지 만들기 (0) | 2024.01.19 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday