해당 게시물은 올바른 방법이 아닌 개인적인 방법임을 미리 고지합니다.
개발하던 웹에서 비로그인 상태로는 접근할수 없는 page의 경우 로그인page로 이동하도록 해왔는데
항상 이전페이지의 정보를 가져올수있는 방법을 몰라 로그인 후 index로 돌려보내곤 했다.
구글링 하던중 request.getHeader("Referer") 로 이전 페이지의 정보를 가져올수 있지만 다른 글들은 아직 내가 모르는 부분을 많이 다루어 활용하기 어려운 부분이 있었다.
내가 아는 부분에서 일단 활용해 보고싶어 system.out을 해봤다.
String referer = request.getHeader("Referer").toString();
system.out.plintln(referer)
http://localhost:8080/goPay
와 같은 형식으로 시스템에 찍히길래 이 값에서 마지막 / 뒤 값을 가져와서 session에 넣기로 했다.
이때 signup index login 세가지 url은 모두 이전페이지의 역할로써는 맞지 않기 때문에 다음과 같이 코드를 짰다
if(!referrer.contains("goLogin")
&&!referrer.contains("goSignup")){
referrer = referrer.split("/")[referrer.split("/").length-1];
if (!referrer.contains("localhost")) {
session.setAttribute("SESSION_PRE_URL", referrer);
}
}
index의 경우 split 했을때 localhost:8080이 나오길래 contains를 통해 막아두었다.
로그인 성공 후에는 SESSION_PRE_URL값이 있는경우 해당 값으로 redirecrt시키고,
값이 비어있는경우 index로 보내는 조치를 해봤다.
String url="index";
if(session.getAttribute("SESSION_PRE_URL")!=null) {
url = session.getAttribute("SESSION_PRE_URL").toString();
url = "redirect:/" + url;
session.setAttribute("SESSION_PRE_URL",null);
}
위 두 로직은 상당히 허점이 많다.
일시적으로 내가 공부한 얕은 지식 선에선 최선의 방법이였고 추후에 이전 페이지로 돌아가는 방법에 대해 스프링을 깊이 있게 공부한 후 꼭 다시 다루고싶다.
'Spring & SpringBoot' 카테고리의 다른 글
MockMVC (0) | 2023.01.13 |
---|---|
SpringBoot JPA 사용하기 (0) | 2022.12.30 |
SpringBoot Swagger UI사용하기 (0) | 2022.12.19 |
Spring AOP (0) | 2022.12.16 |
Spring Boot에서 MariaDB 와 MyBatis를 적용해보기 (0) | 2022.11.30 |