Spring(IntelliJ + Boot) - 인증방법

songmin jeon·2024년 3월 22일
0
  • entity 패키지에 회원 정보를 저장할 클래스 생성
    • Member 클래스 생성
      - 중복을 허용하지 않은 Set<Role .> 타입의 배열이 필요함
      - 유저별 권한을 줘야하기 때문에 필요함
package com.example.springboot.entity;

import jakarta.persistence.*;
import lombok.Data;

import java.util.Set;

@Data
@Entity
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(length = 50, unique = true, nullable = false)
    private String username;
    private String password;
    private String  uname;
    private int age;
    private String email;

    // 권한 정보를 넣을 수 있는 컬럼이 필요
    // 1명의 회원은 여러개의 권한을 가질 수 있다.
    // M:N 관계를 ManyToMany
    @ManyToMany(fetch = FetchType.EAGER) // 즉시로딩(EAGER), 지연로딩(LAZY)
    @JoinTable(
        name="member_roles",
        joinColumns = @JoinColumn(name = "member_id") ,
        inverseJoinColumns = @JoinColumn(name = "role_id")
    )

    private Set<Role> roles; // Role(권한)
}
  • Role 클래스 생성
package com.example.springboot.entity;

import jakarta.persistence.*;![](https://velog.velcdn.com/images/songmin_tech/post/c74515ca-a8e3-4f0f-af5f-df871ea15648/image.jpg)

import lombok.Data;

@Entity
@Data
public class Role {
    // 1 : USER
    // 2 : MANAGER
    // 3 : ADMIN ~~~
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(unique = true)
    private String name;
}

/*
    Member(M)          <관계T.>            Role(N)
    1:홍길동             1   1            1:USER/2:MANAGER/3:ADMIN
    2:나길동             1   2
    3:조길동
*/
  • application 에서 create 변경 > 실행 > 에러 > 무시하고 다시 실행

    • application 에서 update 변경

  • role 테이블에 권한 값 넣어주기

    bulid.gradle에 방문하여 코드 추가

// 스프링 시큐리티 추가
  
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'

  • 빌드하고 > 톰켓 재실행

    • 구동하며 고유 비밀번호를 부여해줌

    • user / 위 이미지의 비번으로 로그인 클릭!

      • 로그인완료

몇몇은 시큐리티 적용 안하는 방법

  • config 패키지 생성 > SecurityConfig 클래스 생성
profile
제가 한 번 해보겠습니다.

0개의 댓글