inblog logo
|
An's Blog
    JAVA

    [JAVA] 64. SpringBoot Security

    윤설안's avatar
    윤설안
    Jul 25, 2025
    [JAVA] 64. SpringBoot Security
    Contents
    1. Spring Security을 사용하면 편리한 점2. 현재 구조3. Spirng Security 구조

    1. Spring Security을 사용하면 편리한 점

    Spring Security는 다음을 대신 처리해줌:
    • 로그인/로그아웃 처리
    • 세션 인증
    • 비밀번호 암호화 비교 (BCryptPasswordEncoder)
    • 권한(Authorization) 체크

    2. 현재 구조

    • /join-form → 회원가입 폼
    • /login-form → 로그인 폼
    • /main → 로그인 성공 시 이동
    • /user/** → 인증된 사용자만 접근 가능

    User

    @NoArgsConstructor @Getter @Entity @Table(name = "user_tb") public class User { @GeneratedValue(strategy = GenerationType.IDENTITY) @Id private Integer id; private String username; private String password; private String email; @Builder public User(Integer id, String username, String password, String email) { this.id = id; this.username = username; this.password = password; this.email = email; } }

    UserController

    @Controller public class UserController { private UserService userService; public UserController(UserService userService) { this.userService = userService; } @GetMapping("/main") public String main() { return "main"; } @GetMapping("/join-form") public String joinForm() { return "user/join-form"; } @PostMapping("/join") public String join(String username, String password, String email) { userService.회원가입(username, password, email); return "redirect:/main"; } }

    UserRepository

    @Repository public class UserRepository { private EntityManager em; public UserRepository(EntityManager em) { this.em = em; } public void save(String username, String password, String email) { em.createNativeQuery("insert into user_tb (username, password, email) values (?, ?, ?)") .setParameter(1, username) .setParameter(2, password) .setParameter(3, email) .executeUpdate(); } }

    main.mustache

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Document</title> </head> <body> <h1>메인 페이지</h1> </body> </html>

    join-form.mustache

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Document</title> </head> <body> <h1>회원가입 페이지</h1> <form method="post" action="/join"> <input type="text" name="username" value="ssar"><br> <input type="text" name="password" value="1234"><br> <input type="text" name="email" value="asd@mail"><br> <button>회원가입</button> </form> </body> </html>
    서버 포트 설정 8080
    spring에 내장 tomcat으로 인해 WAS가 실행
    server.encoding 설정 UTF-8 고정
     

    3. Spirng Security 구조

    notion image
     

    Spring Security의 인증 방식
    Spring Security의 인증 방식
    SecurityConfig 커스터마이징
    SecurityConfig 커스터마이징
    비밀번호 검증
    비밀번호 검증
    CSRF 설정
    CSRF 설정
    역할(Role) 체크
    역할(Role) 체크
    BasicAuthenticationFilter
    BasicAuthenticationFilter
    JWT인증
     
     
    Share article
    Contents
    1. Spring Security을 사용하면 편리한 점2. 현재 구조3. Spirng Security 구조

    An's Blog

    RSS·Powered by Inblog