참고 링크 : https://wikidocs.net/book/7601
오라클DB와 intelliJ로 작업하였습니다
스프링부트는 회원가입과 로그인을 도와주는 스프링 시큐리티(Spring Security)를 사용할수 있다.
스프링 시큐리티란?
스프링 시큐리티는 스프링 기반 애플리케이션의 인증과 권한을 담당하는 스프링의 하위 프레임워크이다.
- 인증(Authenticate)은 로그인을 의미한다.
- 권한(Authorize)은 인증된 사용자가 어떤 것을 할 수 있는지를 의미한다.
스프링 시큐리티 설치
스프링 시큐리티 사용을 위해 다음과 같이 build.gradle 파일을 수정하자.
dependencies {
(... 생략 ...)
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
}
스프링 시큐리티와 이와 관련된 타임리프 라이브러리를 사용하도록 설정했다. "Refresh Gradle Project"를 수행하여 필요한 라이브러리를 설치한 후 로컬서버도 재시작 하자.
스프링 시큐리티 설정
스프링 시큐리티를 설치하고 SBB의 질문 목록 화면에 접속해 보자. 아마도 다음과 같은 로그인 화면이 나타나서 깜짝 놀랄 것이다.
스프링 시큐리티는 기본적으로 인증되지 않은 사용자는 서비스를 사용할 수 없게끔 되어 있다. 따라서 인증을 위한 로그인 화면이 나타나는 것이다. 하지만 이러한 기본 기능은 SBB에 그대로 적용하기에는 곤란하므로 시큐리티의 설정을 통해 바로 잡아야 한다
다음과 같이 SecurityConfig.java 파일을 작성하자.
package com.gosari.repick_project.security;
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.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@Configuration //스프링환경설정파일의미-스프링시큐리티의설정
@EnableWebSecurity //모든요청URL이 스프링시큐리티의 제어받음
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
/*스프링 시큐리티의 세부 설정은 SecurityFilterChain 빈을 생성하여 설정 가능*/
http.authorizeRequests().antMatchers("/**").permitAll();
/* 모든 인증되지 않은 요청을 허락한다는 의미 - 로그인하지않더라도 모든페이지에 접근가능*/
return http.build();
}
}
@Configuration은 스프링의 환경설정 파일임을 의미하는 애너테이션이다. 여기서는 스프링 시큐리티의 설정을 위해 사용되었다. @EnableWebSecurity는 모든 요청 URL이 스프링 시큐리티의 제어를 받도록 만드는 애너테이션이다.
@EnableWebSecurity
애너테이션을 사용하면 내부적으로
SpringSecurityFilterChain이 동작하여 URL 필터가 적용된다.
스프링 시큐리티의 세부 설정은 SecurityFilterChain 빈을 생성하여 설정할 수 있다.
http.authorizeRequests().antMatchers("/**").permitAll()은 모든 인증되지 않은 요청을 허락한다는 의미이다.
따라서 로그인을 하지 않더라도 모든 페이지에 접근할 수 있다.
이렇게 스프링 시큐리티 설정 파일을 구성하면 이제 질문 목록, 질문 답변 등의 기능을 이전과 동일하게 사용할 수 있다.
'Follow Work > SpringbootBoard' 카테고리의 다른 글
[StringBoot] 로그인과 로그아웃 (20) (0) | 2022.08.16 |
---|---|
[StringBoot] 회원가입 (19) (0) | 2022.08.16 |
[StringBoot] 답변 개수 표시 (17) (0) | 2022.08.16 |
[StringBoot] 게시물 일련번호 추가 (16) (0) | 2022.08.16 |
[StringBoot] 페이징 (15) (0) | 2022.08.16 |