Правильный способ вернуть 302 с местоположением - PullRequest
1 голос
/ 23 сентября 2019

Мне нужно вернуть правильное перенаправление согласно спецификации openID Standart , но я никогда не работал с перенаправлениями, поэтому я не уверен, правильно ли я это делаю:

Первый способсогласно Baeldung :

@GetMapping("/redirectWithRedirectView")
public RedirectView redirectWithUsingRedirectView(RedirectAttributes attributes, @RequestParam String response_type, @RequestParam String client_id,
                                                      @RequestParam String redirect_uri, @RequestParam String scope, @RequestParam String state,
                                                      @RequestParam String nonce) {


        attributes.addFlashAttribute("flashAttribute", "redirectWithRedirectView");
        attributes.addAttribute("attribute", "redirectWithRedirectView");
        //do something
        String code = "SplxlOBeZQQYbYS6WxSbIA"; //in real case it is generated.
        return new RedirectView(String.format("%s?%s&%s", redirect_uri, code, state));

, но вызов здесь возвращает

несоответствие типов аргументов \ nController [em_is_resource.EmIntegrationController] \ nMethod [public org.springframework.web.servlet.view.RedirectView em_is_resource.EmIntegrationController.redirectWithUsingRedirectView (org.springframework.web.servlet.mvc.support.RedirectAttributes)] со значениями аргументов: \ п [0] [тип = org.springframework.validation.support.BindingAwareConcurrentModel] [значение ={}]

и второй подход -

@GetMapping("/redir")
public Mono<String> redir(@RequestParam String response_type, @RequestParam String client_id,
                          @RequestParam String redirect_uri, @RequestParam String scope, @RequestParam String state,
                          @RequestParam String nonce) {
    String code = "SplxlOBeZQQYbYS6WxSbIA";
    return Mono.just(String.format("redirect:%s?code=%s&state=%s", redirect_uri, code, state));
}

, но в соответствии с запросом Почтальона он возвращает просто «перенаправление: https://server.example.com:8020/oidcclient/redirect/client01?code=SplxlOBeZQQYbYS6WxSbIA&state=af0ifjsldkj"

Это правильно или я что-то делаюне так?

...