반응형
내 프론트 로컬주소는 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);
}
}
반응형
'나의 개발 기록 > Java /Spring' 카테고리의 다른 글
[vue.js / spring boot] 카카오 로그인 api 해보기 (2) (1) | 2022.08.18 |
---|---|
[Spring boot] Session Timeout (만료 시간) 설정 하기 (0) | 2022.08.17 |
[Vue.js / spring boot] http header에 저장된 cookie 서버로 가져와보기 (0) | 2022.08.15 |
[JAVA / poi] 엑셀 다운로드시 셀 너비 넓히기 (0) | 2022.08.02 |
[vue.js / spring boot] 카카오 로그인 api 해보기 (1) (0) | 2022.07.29 |
댓글