[SpringBoot] Security 사용하기 (+예제)

박정현·2023년 9월 5일
1
post-thumbnail

1. security


Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리하고 있다.

2. security 예제


1.1. 그래들에 의존성 주입


build.gradle

**implementation group: 'org.springframework.security', name: 'spring-security-
implementation group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity5'**

1.2. thymeleaf


security는 Thymeleaf를 이용하면 쉽게 적용할 수 있다.

xml name space에 다음과 같이 추가하여 사용한다.

.html

xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
  • 타임리프에서 security를 사용하기 위해서 sec: 함수를 사용한다.

Entity

MemberEntity

다음 → 이메일, 비밀번호, 권한설정은 security를 하기 위해서는 반드시 필요하다.

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "sec_member_tb_0803")
public class MemberEntity extends BaseEntity{

    // 이메일, 비밀번호, 권한설정 (sercutiry필수)

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "member_id")
    private Long id;

    // 이메일은 반드시 유니크, 낫널 설정
    @Column(nullable = false, unique = true)
    private String email; // 이메일:  user -> username으로 대체

    @Column(nullable = false)
    private String password; //비밀번호 -> 비밀번호 암호화는 필수이다.

    @Enumerated(EnumType.STRING)
    private Role role; //권한설정
}

contrant > role

권한설정은 enum 클래스로 한다.

public enum Role {
    ADMIN, MANAGER, MEMBER
}

이제 실행해보자.

다음과 같이 뜬다면 성공이다.

이제 다른 페이지로 이동할 때 로그인을 해야 하는데

초기 아이디는 user이고 password는 콘솔창에서 주어진다.

  • security 그래들을 추가하면 나타나는 로그인 페이지 확인

    그래들에 의존성을 주입한 뒤 실행해보면 다음과 같은 화면을 볼 수 있다. 이는 Security에서 제공하는 로그인 페이지다.

    • 로그인페이지

    • 로그아웃페이지

      로그아웃을 위해서는 http://localhost:8095/logout 하면 된다.

    • 아이디: user / 비밀번호: 콘솔창에서 확인 가능

      콘솔창에서 비밀번호 복사

    로그인 페이지에서 아이디와 비밀번호를 입력하면 비로소 요청한 페이지로 이동할 수 있다.

로그인을 하면 비로소 해당페이지로 이동된다.

profile
개발을 개발괴발하지 않기 위한 노력

1개의 댓글

comment-user-thumbnail
2023년 9월 26일

너무 도움됐어요!!💛💛💛💛💛

답글 달기