Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

코딩기록

230601 [Spring BOOT] 13_Login - Properties 본문

study

230601 [Spring BOOT] 13_Login - Properties

9-99zy 2023. 6. 1. 17:34

properties

properties 활용

  • Spring 에서는 주요 정보를 properties 파일에 저장해 놓거나 불러와서 사용 한다.
  • Xml 이나 properties 는 정보를 컴파일 하지 않기 때문에 쉽게 읽고 수정이 가능 하다.
  • 하지만 보안 성 측면에서는 위험 할 수 있다.
  •  Login 서비스 구현하면서 properties를 활용 해 보자

 


 

MainController

package kr.co.gudi.controller;

@RestController
public class MainController {
	
	Logger logger = LoggerFactory.getLogger(getClass());
	@Autowired MainService service;
	
	//RestController를 사용하면 페이지 이동이 안되기 때문에, ModelAndView를 사용해서 페이지를 이동시킨다.
	  
	@RequestMapping(value="/") 
	public ModelAndView home() { 
	
		return new ModelAndView("login"); 
			 
	}
	
	
	@PostMapping(value="/login.do")
    // HttpServletRequest 은 요청에 대한 보든 정보를 담고 있음
	public ModelAndView login(String id, String pw, HttpServletRequest req) {
		
        // getRemoteAddr을 사용해서 ip 를 가져옴
		String ip = req.getRemoteAddr();
		logger.info("remote ip :"+ip); //remote ip :0:0:0:0:0:0:0:1 <-IPV6 
		// -Djava.net.preferIPv4Stack=true <- 127.0.0.1
		
        // req 에서 세션 가져옴
		return service.login(id, pw, ip, req.getSession());
	}
}

 

 

ip가 :0:0:0:0:0:0:0:1 라고 뜨는건 ip버전이 6여서 그런것 4로 바꿔줘야한다.

run maincontainer -> run configurations -> arguments 에서

VM arguments 에 "-Djava.net.preferIPv4Stack=true" 넣어주기

 

application.properties

#super user
user.id=superAdmin
user.pw=pass@Goodee
user.ip=127.0.0.1

 

 

MainService

package kr.co.gudi.service;

import kr.co.gudi.dao.MainDAO;

@Service
public class MainService {
	
	Logger logger = LoggerFactory.getLogger(getClass());
	
	@Autowired MainDAO dao;
	
	// properties 에 있는 값 가져다 쓰기
    // @value를 사용해서 user_id를 adminId 란 스트링 변수에 저장...
	@Value("${user.id}") private String adminId;
	@Value("${user.pw}") private String adminPw;
	@Value("${user.ip}") private String adminIp;
	
	public ModelAndView login(String id, String pw, String ip, HttpSession session) {

		logger.info(id+"/"+pw);
		// 특정한 ID 로 로그인 시도시 일반 DB 를 통한 로그인을 하지 않는다.
		logger.info(adminId+"/"+adminPw+"/"+adminIp);
		
		String page = "redirect:/";
		
        // 만약 관리자 아이디로 로그인 하면 grade 가 admin 이고 
        // 그 외의 아이디로 로그인 하면 grade 가 member
		if(id.equals(adminId)) {
			// 관리자 로그인 진행
			if(pw.equals(adminPw) && ip.equals(adminIp)) {
				page = "result";
				session.setAttribute("loginId", id);
				session.setAttribute("ip", ip);
				session.setAttribute("grade", "admin");
				
				}
		}else {
			// DB 를 이용한 일반 로그인 진행
			if(dao.login(id,pw)>0){
				session.setAttribute("loginId", id);
				session.setAttribute("ip", ip);
				session.setAttribute("grade", "member");
				page = "result";
			};
		}
		return new ModelAndView(page);
	}
}

 

결과

(일반회원)

id : admin 

pw : pass

 

(관리자)

id : superAdmin

pw : pass@Goodee

 

'study' 카테고리의 다른 글

230605 [Spring BOOT] build, war&jar , 암호화,  (0) 2023.06.05
230601 [Spring BOOT] 14 이어서  (0) 2023.06.02
230531 [Spring BOOT] 12_api  (0) 2023.05.31
[Spring Boot] 1일차 01~05.Mybatis  (0) 2023.05.24
Day - 43 [Spring] FileService  (0) 2023.05.21