본문 바로가기
  • 평범한 나의 개발공부 일지
나의 개발 기록/Java /Spring

[Spring] 외부 URL로 redirect 하는방법

by 블랑 블랑 2022. 7. 31.
반응형

내 프론트 로컬주소는 localhost:8081

백엔 로컬주소는 localhost:8080

 

예를들어 백엔(spring boot)에서 return값에 redirect:localhost:8081/index해주면 

localhost:8080/localhost:8081/index 요런 형식이 되버린다............... 

 

하지만 RedirectView 를 이용하면 가능하다

 

1. return타입을 RedirectView 로 바꿔준다음에

2. RedirectView redirectView = new RedirectView();   // 선언해주고

3. redirectView.setUrl("http://localhost:8081/groupList");   // 이동할 url적어주고
4. return redirectView;   // return값을 redirectView로 바꿔준다

 

 카카오로그인API 공부중 나의 controller 전체 코드 ▼

	@RequestMapping(value="/login/kakao")
	public RedirectView kakaoCallback(@RequestParam String code, HttpSession session) {
		System.out.println("kakao callback 컨트롤러 접근");
		System.out.println(code);
		
		RedirectView redirectView = new RedirectView();
		
		//1. 코드전달
		String access_token = kakaoApi.getAccessToken(code);
		
		System.out.println("1. access_token : " + access_token);
		
		//2. 인증코드로 토큰 전달
		HashMap<String, Object> userInfo = kakaoApi.getUserInfo(access_token);
		
		System.out.println("2. login info : " + userInfo);
		System.out.println("2-1. login info : " + userInfo.toString());
		
		if(userInfo.get("email") != null) {
			session.setAttribute("userId", userInfo.get("email"));
			session.setAttribute("access_token", access_token);
		}
		
		redirectView.setUrl("http://localhost:8081/groupList");
			
		return redirectView;
	}

 

아주 잘 성공되었다

 

 

 

이밖에도 아래처럼 외부 url redirect 하는방법은 여러가지가 있다 나는 그중에서 RedirectView 를 선택한것!

mport org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;


@Controller
public class ExRedirectController {
   // return string
   @GetMapping("/ex_redirect1")
   public String exRedirect1() {
       return "redirect:http://www.naver.com";
   }
   // return ModelAndView
   @GetMapping("/ex_redirect2")
   public ModelAndView exRedirect2() {
       String projectUrl = "redirect:http://www.naver.com";
       return new ModelAndView("redirect:" + projectUrl);
   }
   
   // httpServletResponse.sendRedirect
   @GetMapping("/ex_redirect3")
   public void exRedirect3(HttpServletResponse httpServletResponse) throws IOException {
       httpServletResponse.sendRedirect("https://naver.com");
   }
   
   // RedirectView 
   @RequestMapping("/ex_redirect4")
   public RedirectView exRedirect4() {
       RedirectView redirectView = new RedirectView();
       redirectView.setUrl("http://www.naver.com");
       return redirectView;
   }
   
   // httpHeaders
   @RequestMapping("/ex_redirect5")
   public ResponseEntity<Object> exRedirect5() throws URISyntaxException {
       URI redirectUri = new URI("http://www.naver.com");
       HttpHeaders httpHeaders = new HttpHeaders();
       httpHeaders.setLocation(redirectUri);
       return new ResponseEntity<>(httpHeaders, HttpStatus.SEE_OTHER);
   }
}

 

 

 

 

 

반응형

댓글