SPRING 비밀번호 암호화(db에 저장)

https://mvnrepository.com/ - spring security web 검색 - 첫번째꺼 클릭 

- 아무버전(최신 버전) 클릭 - maven 부분 복사 -

pom.xml 붙여넣기(버전을 스프링 버전에 맞게 ${org.springframework-version})

 

service쪽에서 BCryptPasswordEncoder en = new BCryptPasswordEncoder();

en.encode(암호화 할 변수) : 해당 변수가 암호화 된다

en.matches("비교할 변수", "암호화된 변수") : 암호화한 변수를 풀어서 비교하는 방법 (복호화)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SPRING 다음 주소 api 사용

다음 주소 api 검색 - 해당하는 api 복사 - register.jsp에 붙여넣기

같은 name의 여러개의 값을 dto로 받아오면 ,(콤마)를 기준으로 한번에 받아온다

* split을 사용하여 ,(콤마)를 기준으로 잘라낼 수 있다.

 

같은 name의 여러개의 값을 req로 받아오려면, req.getParameterValues()로 받아온다 (배열 형식)

 

* 해당하는 api관련 script문은 resources폴더 안에서 따로 관리 (javascript 파일)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script type="text/javascript" src="<%= request.getContextPath() %>/resources/js/daumPost.js">
</script>
</head>
<body>
	<%@ include file="/WEB-INF/views/default/header.jsp" %>
	<h3> - 회 원 가 입 -</h3>
	<form action="register" method="post">
		<input type="text" name="id"><br>
		<input type="text" name="pwd"><br>
		<input type="text" id="addr1" name="addr" readonly placeholder="우편번호"><br>
		<input type="text" id="addr2" name="addr" readonly placeholder="주소"><br>
		<input type="text" id="addr3" name="addr" placeholder="상세주소">
		<button type="button" onclick="daumPost()">우편번호 검색</button><br>
		<input type="submit" value="가입"><br>
	</form>
</body>
</html>
function daumPost() {
    new daum.Postcode({
        oncomplete: function(data) {
            // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분입니다.
            // 예제를 참고하여 다양한 활용법을 확인해 보세요.
            console.log(data);
            console.log(data.userSelectedType)
            let addr = "";
            if (data.userSelectedType == "R") {
            	addr = data.roadAddress;
			}else{
            	addr = data.jibunAddress;
			}
            document.getElementById("addr1").value=data.zonecode;
            document.getElementById("addr2").value=addr;
            document.getElementById("addr3").focus();
        }
    }).open();
}
	@PostMapping("register")
	public String register(MemberDTO dto, HttpServletRequest req) {
		System.out.println("addr : " + dto.getAddr());
		String[] addrs = req.getParameterValues("addr");
		System.out.println(addrs[0]);
		System.out.println(addrs[1]);
		System.out.println(addrs[2]);
		int result = ms.register(dto);
		
		if(result == 1) {
			return "redirect:login";
		}
		return "redirect:register_form";
	}

 

실행 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SPRING Interceptor

* 컨트롤러 실행 전, 컨트롤러가 실행 후 처리할 게 있으면 Interceptor 사용

Filter : DispatcherServlet이 실행되기 전, web.xml 설정

Interceptor : DispatcherServlet이 실행된 후, spring-web.xml 설정

preHandle : 컨트롤러가 호출되기 전 실행

postHandle : 컨트롤러가 실행된 후 호출

 

Interceptor 사용 설정

해당 클래스에 extends HandlerInterceptorAdapter 상속을 받아야 Interceptor 사용 가능

(alt + shift + s) - Override/Implement Methods - postHandle, preHandle 체크 - ok

preHandle 실행 전, postHandle 컨트롤러 실행 후

* preHandle, postHandle메소드의 파라미터값 변경 불가

* return true : 해당 경로로 보내줌, return false : 해당 경로로 안 보내줌

 

Interceptor 빈 생성

servlet-context.xml - <beans:bean id="변수명" class="Interceptor클래스 위치" />

<interceptors><interceptor><mapping path="경로 지정" /><benas:ref bean="변수명" /></interceptor></interceptors>

* 초록색 : 같은 값

 

 

package com.care.root.interceptor;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.care.root.common.SessionCommon;

public class MemberInterceptor extends HandlerInterceptorAdapter implements SessionCommon{

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("index 실행 전 출력");
		HttpSession session = request.getSession();
		if (session.getAttribute(LOGIN) == null) {
			//response.sendRedirect("login");
			response.setContentType("text/html; charset=utf-8");
			PrintWriter out = response.getWriter();
			out.print("<script>alert('로그인 먼저 하세요');"
						+"location.href='login';</script>");
			return false;
		}
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("index 실행 후 동작");
	} 
}
	<beans:bean id="mi" class="com.care.root.interceptor.MemberInterceptor" />
	<interceptors>
		<interceptor>
			<mapping path="/member/memberInfo" />
			<mapping path="/member/info" />
			<beans:ref bean="mi" />
		</interceptor>
	</interceptors>

 

실행 결과

+ Recent posts