웹개발/SpringBoot

[Spring Framework] 로그인과 로그아웃과 같은 인증을 쉽게 구현하게 도와주는 Spring Security

뎁쭌 2023. 12. 5. 17:49
728x90
반응형

Spring Security

로그인과 로그아웃에 관련된 기능을 쉽게 구현할 수 있음

 

로그인 구현

Spring Security 의존성 추가

implementation 'org.springframework.boot:spring-boot-starter-security'

의존성을 추가하는것만으로 따로 로그인 페이지나 기능을 구현하지 않아도 자동으로 로그인 페이지로 넘어가진다.

 

SpringSecurity 로그인 페이지

개발자 전용

id : user

pw : 디버깅 창에서 나오는 패스워드

 

디버깅 창에서 나오는 패스워드는 항상 바뀌기 때문에 이를 고정된 값으로 매핑해줄 수 있다.

 

## 추가 application.properties에서 간단하게 아디이와 패스워드 설정하는 법(간단함)

spring.security.user.name = username
spring.security.user.password = password

 

인증과 관련된 설정들을 저장할 클래스를 만들고 자신이 원하는 고정된 값을 넣어주자.

package com.spring_jyp_todo.springbootTodoProject.security;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

import java.util.function.Function;

@Configuration
public class SpringSecurityConfiguration {
    @Bean
    public InMemoryUserDetailsManager createUserdetailManage(){
        // 람다 함수를 이용하여 input을 이용하여 비밀번호 인코딩
        Function<String, String> passwordEncoder
                    = input -> passwordEncoder().encode(input);

        // 고정된 값 생성
        UserDetails userDetails = User.builder()
                .passwordEncoder(passwordEncoder)
                .username("park")
                .password("dummy")
                .roles("USER", "ADMIN")
                .build();
        return new InMemoryUserDetailsManager(userDetails);
    }

    @Bean
    public PasswordEncoder passwordEncoder(){
        return new BCryptPasswordEncoder();
    }

}