스프링 - 비밀번호 비교하기 (Bcrypt)

jinvicky·2023년 2월 5일
0

2023 Spring Project TIL

목록 보기
6/32

저번에 비밀번호 인코딩하는 법을 공부했었다. 이제 비교하는 법을 적용해보았다.

처음에는 해시코드를 각각 생성해서 (.hashcode() 사용) 같은 지 비교해보았는데 전혀 다른 값이 나왔다.
그래서 폭풍검색을 했더니 누가 .matches() 메서드를 써보라고 했다.
근데 또 쓰는 것도 단번에 안되고 해맸다. 파라미터로 무슨 값을 넣어야 할지 몰랐고 여하튼 몇번 틀리다가 아래처럼 테스트 완료까지 했다.

package com.fastcampus.ch4.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class PwdController {

    @Autowired
    BCryptPasswordEncoder passwordEncoder;

    @GetMapping("/register")
    public String register() {
        return "input";
    }

    @PostMapping("/register")
    public String register(HttpServletRequest request) {

        //1. request객체로부터 name이 pwd인 값을 얻어서 저장한다. (input name="pwd" 주의)
        String pwd = request.getParameter("pwd");
        //2. 테스트용으로 미리 인코딩한 비밀번호를 선언한다.
        String testEncodedPwd = passwordEncoder.encode("jinvicky");

        //passwordEncoder의 내장 메서드인 matches(입력받은 비밀번호, 인코딩된 디비 안 비밀번호);
        System.out.println(passwordEncoder.matches(pwd, testEncodedPwd));

        return "redirect:/";
    }
}

요부분 나중에도 틀리지 않게 주의해라

        System.out.println(passwordEncoder.matches(pwd, testEncodedPwd));

즉 주입받은 인코더.matches(입력한 비번, 인코딩된 비번)다.
아래 사이트 보고 했다. 이해하기 쉬워서 좋았다.
https://gompangs.tistory.com/entry/Spring-Password-Encoder

너무 간단한 거라서 설명할 게 없다. 그래도 단계별로 해야 나는 안 꼬이는 편이다.

profile
Front-End와 Back-End 경험, 지식을 공유합니다.

0개의 댓글

관련 채용 정보