책과 인터넷 강의를 통해 회원가입과 로그인에 대해서 배웠습니다.
배운 내용을 바탕으로 회원가입과 로그인을 만들어보려고 합니다.
환경은
mysql, springSecurity, gradle, .yml로 진행합니다.
plugins {
id 'org.springframework.boot' version '2.5.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.asdAnything'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
test {
useJUnitPlatform()
}
프로젝트를 생성할 때 준비한 의존관계입니다.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mac?serverTimezone=UTC
username: root
password: 1234
jpa:
hibernate:
ddl-auto: create
properties:
format_sql: true
logging:
level:
org.hibernate.SQL: debug
.yml 파일입니다. mysql에 연동하였습니다.
주소창에 localhost:8080을 입력하면
이런 화면이 뜨는 것을 확인할 수 있습니다.
이 화면은 스프링 시큐리티에서 제공하는 뷰입니다.
스프링에서 비밀번호를 제공하고
아이디는 user를 치면 로그인 화면이 넘아가는 것을 알수 있습니다.
이번에는 이 화면을 나오지 않게 해보겠습니다.
config라는 디렉토리를 만들고 SecurityConfig라는 클래스를 만듭니다.
package com.asdanything.ask.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//super.configure(http);
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
클래스를 만들고 WebSecurityConfigureAdapter를 상속받고 @EnableWebSecurity 애노테이션을 붙여줍니다.
이렇게 하면 SpringSecurityFilterChain이 자동으로 포함되게 됩니다.
밑에 @Bean으로 등록한 메소드는 비밀번호를 암호화 시켜주는 메소드입니다.
user의 비밀번호를 그대로 데이터베이스에 저장하게 되면 문제가 생길 수 있기 때문에 암호화가 필요합니다.
이제 configure메소드에 대해서 살펴보겠습니다.
이 메소드 안에서 페이지 권한, 로그인 페이지 설정, 로그아웃 메소드 등에 대해서 설정할 수 있습니다.
제가 주석처리한 super.configure(http)는 메소드를 오버라이딩하면 처음부터 있는 부분입니다.
저 부분때문에 localhost를 입력했을 때 스프링시큐리티에서 제공하는 로그인 페이지에 연결되었습니다.
다시한번 실행시켜 보겠습니다.
사진처럼 로그인페이지 없이 바로 whitelabel 페이지가 뜨게 됩니다.
'스프링' 카테고리의 다른 글
스프링 시큐리티를 이용한 회원가입과 로그인 4 - 유효성 완료 (0) | 2021.10.03 |
---|---|
스프링 시큐리티를 이용한 회원가입과 로그인 3 - html 화면 (0) | 2021.10.02 |
스프링과 의존관계 자동 주입 (0) | 2021.09.20 |
스프링 컨포넌트 스캔 (0) | 2021.09.15 |
스프링 싱글톤 (0) | 2021.09.14 |
댓글