본문 바로가기

Spring

SPRING (08.27) - 좋아요, 싫어요 로그인 후 처리

좋아요, 싫어요 로그인 후 처리 (생각)

  1. 좋아요 싫어요 할 때 로그인 필요하면 로그인 페이지로 이동하도록 하고 싶은데, 현재 상태는 로그인 안한 상태로 좋아요 버튼 시도 했을 때 좋아요 오류로 창이 뜨고, 그 페이지가 유지된다.

그 alert 창이 뜨는 곳에서 수정해주면 될 듯 하다.

"alert('로그인 먼저 해주세요.');
location.href = "../member/login";"

 

그래서 위의 코드를 <script>안의 if 문 else에 넣었다. 로그인 성공 후 원래의 페이지로 돌아올 수 있도록! (하지만, else에 넣어서, 어떤 오류든 로그인 먼저 해달라는 창만 보게 될 것.. 이게 무슨 코드야.. 생각 좀 더 해보자..)

이어서 하면 위의 코드로 로그인 안한 상태로 좋아요 누를 시 alert 창이 띄워지고 확인 버튼을 누르면 로그인 페이지로 넘어가지만, 로그인 한 뒤 메인페이지로 넘어가 버린다. 로그인 페이지에서 조건을 걸어줘야하는지, detail 페이지에서 걸어주는건지..

 

첫번째로는 alert 하고 다시 되돌아오는 방법도 있지 않을까?

또는 실질적으로 로그인 페이지에 가서 아이디, 비밀번호 입력 후 확인 버튼을 누르게 되면 "/user/member/doLogin"으로 post 방식으로 form이 전달되는데, return Ut.jsReplace("S-1", Ut.f("%s님 환영합니다", member.getNickname()), "/"); 이 코드로 인하여 메인페이지로 넘어가 버리는 것

여기에 조건문을 걸어주면 되는건가? 어떻게??
.
.
.

2번째 방법이 맞는 것 같은데 이전 페이지로 되돌리려먼 history.back 아니면 detail의 id를 넘겨주어야 할 것 같은데 일단 주소를 넘겼을 때 로그인 버튼을 누르고 다시 되돌릴 수 있는지 확인 먼저 해보자....

// 이전 페이지로 되돌리기 위한 url을 세션의 prevPage attribute에 저장한다.

구글링으로 이전 페이지 되돌릴때 url을 걸어줘서 넘기는 방법이 있는 것 같은데 이 부분은 어떻게 적용해야 사용할 수 있을까?

쉽게 생각하자.........

당연히 디테일에서 그 상태의 url의 정보를 넘겨주어야 다음 페이지에서 돌아올 수 있지 않을까?

컴퓨터는 생각보다 더 세세하게 알려주어야한다고..!!!!!!


해결방법✨

NaN (Not a Number)

  • NaN은 전역 객체의 속성이다. 즉, 전역 범위의 변수!
    계산( 0을 0으로 나누기)이나 숫자로 표현할 수 없는 결과가 나왔을 때, "NaN"이 사용된다. NaN이 나오면, 계산 중에 뭔가 잘못되었거나 예외적인 상황이 발생했다고 볼 수 있다.

if(isNaN(params.memberId) == true){
	if(confirm('로그인 창으로 이동할래?')){
// 			console.log(window.location.href);
// 			console.log(encodeURIComponent(window.location.href));
		var currentUri = encodeURIComponent(window.location.href);
		window.location.href = '../member/login?afterLoginUri=' + currentUri;
	}
	return;
}	

 

location.href, location.replace()

  • location.href에서 href는 객체에 속해 있는 설정으로 현재 접속중인 페이지의 정보를 갖고 있다.
  • location.href는 객체의 속성이며, location.replace()는 메서드(함수) 작동
    href는 페이지를 이동하는 것이기 때문에 뒤로가기 버트능ㄹ 누른 경우 이전 페이지로 이동이 가능하지만, replace는 현재 페이지를 새로운 페이지로 덮어 씌우기 때문에, 이전 페이지로 이동이 불가능하다.

replace의 경우는 이전페이지로 접근이 필요없는 경우 보안상 덮어씌우는 것도 괜찮을 듯 !

window.location.href == location.href

 

encodeURIComponent()

  • encodeURIComponent() 함수는 URI(Uniform Resource Identifier)의 구성 요소를 인코딩하여 안전하게 사용할 수 있도록 한다. URL에 사용될 수 없는 특수문자(공백, &, #, % 등)를 안전한 문자로 변환해준다.
  • encodeURIOComponent()를 사용하는 이유는 URL을 쿼리 매개변수로 안전하게 전달하기 위함이고, 이를 통해서 특수 문자로 인해 발생할 수 있는 문제를 방지하고, 사용자가 로그인한 후 정확하게 원래 페이지로 돌아갈 수 있게 된다.