먼저,
클라이언트에서 id와pw를 서버에 전달하여 서버는 해당정보로 존재하는 사용자인지 검증한 뒤
sessionID(랜덤한 값)을 생성하여 서버의 세션저장소에 sessionID를 저장했다
그리고 sessionID를 클라이언트로 다시 전달할때 http헤더의 쿠키에 담아 전달 하였다
그결과 ! ▼
이제
쿠키에 담긴 sessionID를 이용하여
페이지가 이동될때마다 서버로 sessionID를 전달하려고한다
mounted() 를 사용해서
해당 페이지가 로드되면 실행되도록 했다!
component
this.$store.dispatch('loginStore/keepLogin')
.then(() => {
if(this.$store.state.loginStore.loginYN){
console.log("로그인유지");
}else{
console.log("로그인유지실패");
}
})
.catch(() => {
console.log("로그인유지로직오류");
})
loginStore/keepLogin (store)
keepLogin( {commit} ){
console.log("keepLogin!!!!!!");
return axios.post('/api/keepLogin')
.then(response => {
console.log(response.data);
if(response.data == "유지성공"){
commit('change');
}
})
}
이때 commit은 클라이언트에 있는 sessionid와 서버에 저장되어있는 sessionID가 일치하는지 확인하는 로직이고
성공시
state에 있는 로그인여부 판단하는 변수에 true값을 줘서
true면 로그인유지, false면 로그인유지가 안되도록 하려고 한다 (이게,,바로,,, 세션유지 (?) )
backend
@RequestMapping(value = "/keepLogin", method = {RequestMethod.POST})
public String keepLogin(HttpServletRequest request, HttpSession session) {
System.out.println("keepLogin 컨트롤러 접근");
String result = "";
Cookie[] cookkkk = request.getCookies();
String cookie = null;
for(Cookie c : cookkkk) {
if(c.getName().equals("sessionIdCookie")) {
cookie = c.getValue();
}
}
System.out.println("1. 쿠키값 : " + cookie);
System.out.println("2. 세션값 : " + session.getAttribute("sessionId"));
if(cookie == session.getAttribute("sessionId")){
result = "유지성공";
}else {
result = "유지실패";
}
return result;
}
중요한건 백단에서
잘 찍혀 나오는데... 그렇다는건 클라이언트에서 잘 호출했다는 건데 (?)
404에러가 난다 ㅇ0ㅇ............................ 여기서부터는 해결후 ㅠ 추후 수정......!
+ 해결
백단에서 @ResponseBody 어노테이션이 빠져서 그렇다..!
@ResponseBody 이란? 비동기 통신을 위해서는 body에 담아서 보내야한다 그래서 응답을 해줘야 하니까 응답해줄 요청메세지를 body에 보내줘야하는데 이때 작성해주어야하는 어노테이션이 responseBody!
요걸 빼먹어서.........그렇다.... 추가해주니 바로 에러 해결 완료
@RequestMapping(value = "/keepLogin", method = {RequestMethod.POST})
@ResponseBody
public String keepLogin(HttpServletRequest request, HttpSession session) {
System.out.println("keepLogin 컨트롤러 접근");
String result = "";
Cookie[] cookkkk = request.getCookies();
String cookie = null;
for(Cookie c : cookkkk) {
if(c.getName().equals("sessionIdCookie")) {
cookie = c.getValue();
}
}
System.out.println("1. 쿠키값 : " + cookie);
System.out.println("2. 세션값 : " + session.getAttribute("sessionId"));
if(cookie == session.getAttribute("sessionId")){
result = "유지성공";
}else {
result = "유지실패";
}
return result;
}
'나의 개발 기록 > Java /Spring' 카테고리의 다른 글
[vue.js / spring boot] 카카오 로그인 api 해보기 (2) (1) | 2022.08.18 |
---|---|
[Spring boot] Session Timeout (만료 시간) 설정 하기 (0) | 2022.08.17 |
[JAVA / poi] 엑셀 다운로드시 셀 너비 넓히기 (0) | 2022.08.02 |
[Spring] 외부 URL로 redirect 하는방법 (0) | 2022.07.31 |
[vue.js / spring boot] 카카오 로그인 api 해보기 (1) (0) | 2022.07.29 |
댓글