주니어 개발자 성장기

1. 설정 본문

예제/Session

1. 설정

Junpyo Lee 2023. 5. 16. 22:41

가이드 참고

일단 Spring Security를 통한 인증을 먼저 구현하기 위해 Spring Security Guide 를 참고한다.

Getting Started | Securing a Web Application

 

Getting Started | Securing a Web Application

Suppose that you want to prevent unauthorized users from viewing the greeting page at /hello. As it is now, if visitors click the link on the home page, they see the greeting with no barriers to stop them. You need to add a barrier that forces the visitor

spring.io

 

 

프로젝트 셋업

https://start.spring.io/ 를 통해 프로젝트를 생성하면 된다. 설정은 다음과 같이 했다.

  • 스프링 3.xxx 부터 자바 17이상 사용을 권장한다.
  • 가이드에 의존성은 Spring Web, Thymeleaf 2가지를 추가하라고 되어 있지만, 나중에 필요한 의존성들도 추가해 주었다.
  • Generate 해서 압축을 풀고 IDE 통해 열어주자.

Gradle 설정

최초에는 Redis를 사용하지 않을 것이기 때문에 build.gradle에서 주석 처리해주자.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

	//Redis
//	implementation 'org.springframework.boot:spring-boot-starter-data-redis-reactive'
//	implementation 'org.springframework.session:spring-session-data-redis'

	//Spring Security
//	implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
//	implementation 'org.springframework.boot:spring-boot-starter-security'
//	implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
//	testImplementation 'org.springframework.security:spring-security-test'


	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'io.projectreactor:reactor-test'
}

 

유의할 점

  • 만약 Redis를 포함해서 빌드하면 요청시에 Redis를 찾을 수가 없다는 런타임 에러가 뜬다.
  • Spring Security도 뒤에 나올 웰컴 페이지 생성을 위해 잠시 비활성화 한다.

 

 

웰컴 페이지 생성

 

테스트용 동적 페이지를 생성한다.

 

src/main/resources/templates

hello.htmlhome.html을 아래와 같이 만들어넣어준다.

hello.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org">
<head>
    <title>Spring Security Example</title>
</head>
<body>
<h1>Welcome!</h1>

<p>Click <a th:href="@{/hello}">here</a> to see a greeting.</p>
</body>
</html>

 

home.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="https://www.thymeleaf.org">
<head>
    <title>Spring Security Example</title>
</head>
<body>
<h1>Welcome!</h1>

<p>Click <a th:href="@{/hello}">here</a> to see a greeting.</p>
</body>
</html>

 

View Controller 설정

src/main/java/com/jp/session/config 경로에 다음과 같은 MvcConfig.java 를 만들어 준다.

@Configuration
public class MvcConfig implements WebMvcConfigurer {

	public void addViewControllers(ViewControllerRegistry registry) {
		registry.addViewController("/home").setViewName("home");
		registry.addViewController("/").setViewName("home");
		registry.addViewController("/hello").setViewName("hello");
		registry.addViewController("/login").setViewName("login");
	}
}

위 설정을 통해 View Controller 4가지가 추가됐다.

서버 기동 확인

서버를 기동하고, 브라우저에서 http://localhost:8080에 들어가 확인해본다.

 

위와 같은 페이지가 나오면 성공이다.

 

Git Repo:

GitHub - wnsvy607/Spring-Security-Session-Practice: 스프링 시큐리티로 세션 구현하기 연습

 

GitHub - wnsvy607/Spring-Security-Session-Practice: 스프링 시큐리티로 세션 구현하기 연습

스프링 시큐리티로 세션 구현하기 연습. Contribute to wnsvy607/Spring-Security-Session-Practice development by creating an account on GitHub.

github.com

 

 

 


2023.05.17 추가

위의 Spring Security 예제는 의미가 없을 정도로 너무 간단해서 따로 포스팅 할 필요는 없다. 다음 포스팅에서는 Spring Security를 생략하고 바로 Spring Session으로 넘어간다.

 

'예제 > Session' 카테고리의 다른 글

4. Spring Security - 인증 과정 이해하기 (2)  (0) 2023.06.15
3. Spring Security - 인증 과정 이해하기 (1)  (0) 2023.05.27
2. Spring Session  (0) 2023.05.18
0. 프로젝트 목적  (0) 2023.05.16