코딩기록
230601 [Spring BOOT] 13_Login - Properties 본문
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 |