[Spring] Spring Security(1) : 사용준비 및 설정

민지·2024년 2월 22일
0

1. Spring Security란? + Spring Security 사용 준비 과정

Spring Security란?

  • 로그인, 로그아웃 인증을 위한 프레임워크

Spring Security 사용 준비 과정

사용자가 그 어떠한 url에 접속해도, 제일 먼저 로그인 인증을 거친 후, welcome 뷰로 가게끔 설정해야 한다.

아래 코드는 루트 url에 접속하면, 사용자를 무조건 welcome.jsp로 가게끔 설정했다.

LoginController 삭제 후, WelcomeController 코드

@Controller
@SessionAttributes("name")
public class WelcomeController {

	@RequestMapping(method = RequestMethod.GET, value = "/")
	public String gotoWelcomePage(ModelMap model) {
		model.put("name", "minjiki2");
		return "welcome";
	}

}

name을 minjiki2로 하드코딩한 상태이다. 후에 포스팅에서, Spring Security프레임워크의 클래스를 이용해, 로그인한 사용자의 ID를 가져오는 메서드로 수정할 예정이다.

루트 url (localhost:8080/) 실행결과,

성공!

Spring Security를 사용할 준비는 끝났다. 이제, Spring Boot Starter Security로 Spring Security 설정을 시작해보자.

2. String Boot Starter Security로 Spring Security 설정하기

pom.xml에서 spring-boot-starter-security 의존성 주입

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>

완전 신기. 이것만 추가했는데, localhost:8080/ url이든, localhost:8080/add-todo url이든, localhost:8080/list-todos url이든 그 어떤 url로 들어와도, 항상 화면은 로그인하라고 다음 화면만 뜬다.

즉, 로그인을 제일 먼저 해야만, 해당 웹사이트를 이용할 수 있게 한다!

그리고 콘솔창에 password가 매번 랜덤하게 뜨고, id는 "user"이다.
Using generated security password: 067cb70f-88ee-4cd3-9fd3-2371b2fd6b68

This generated password is for development use only. Your security configuration must be updated before running your application in production.

로그인에 성공하면, welcome.jsp 화면이 뜨고, 기타 todo 화면도 이용 가능하다.

마치며..

-> WelcomeController.java에서 루트 url 입력 시, welcome.jsp로만 가게끔 코드를 작성했고, 실제 login, logout 관련된 컨트롤러, 뷰 코드는 아무것도 작성하지 않았는데! pom.xml에서 spring-boot-starter-security만 추가하고 나니,

  • 로그인을 해야만 해당 웹사이트 이용 가능
  • login, logout 기능 가능해짐

-> 하지만 아쉬운 점은, 콘솔창에서 매번 달라지는 password로만 로그인이 가능하다는 것. 그리고 해당 password는 for development use only; 즉 개발을 배우는 용도로만 쓰이는 것..

다음 포스팅에서는 사용자만의 id, password값을 설정할 것이다.




참고 및 출처
이 시리즈는 Udemy 강의의 내용을 정리한 것입니다.
https://www.udemy.com/course/spring-boot-and-spring-framework-korean/

profile
배운 내용을 바로바로 기록하자!

0개의 댓글