0

Spring MVC 3.1 を使用してサンプル アプリケーションを開発しています。このアプリケーションでは REST API を使用しており、REST API を使用するために Rest テンプレートを使用しています。

私の最初のページは、ユーザーがユーザー名とパスワードを入力する単純なログイン フォームです。コントローラーでは、これらのユーザー名とパスワードを取得してエンコードし、基本認証の get 要求を送信します。

ステータス コードが 200 の場合、ユーザーは認証されています。それ以外の場合は認証されていません。

しかし、私は常にステータスコード301を取得しています.

私のコントローラーコードは次のとおりです。

@RequestMapping(value = "/loginForm", method = RequestMethod.POST)
    public String login(@ModelAttribute("loginForm") LoginForm loginForm,
            BindingResult result, ModelMap model) {

        String userName = loginForm.getUserName();
        String password = loginForm.getPassword();

        // Basic Authentication

        String token = userName + ":" +password;
        BASE64Encoder enc = new sun.misc.BASE64Encoder();
        String encodedAuthorization = enc.encode(token.getBytes());
        String authHeader = "Basic " + encodedAuthorization;

        System.out.println("authHeader :::::: " + authHeader);

        // Prepare acceptable media type
        List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
        acceptableMediaTypes.add(MediaType.APPLICATION_XML);

        HttpHeaders headers = new HttpHeaders();

        headers.setAccept(acceptableMediaTypes);
        headers.setContentType(MediaType.APPLICATION_XML);
        headers.set("Authorization", authHeader);

        HttpEntity<String> entity = new HttpEntity<String>(headers);

        ResponseEntity<String> responseEntity = restTemplate.exchange(uri,
                HttpMethod.GET, entity, String.class);

        HttpHeaders header = responseEntity.getHeaders();
        HttpStatus code = responseEntity.getStatusCode();

        System.out.println("Header :::::: " + header);
        System.out.println("Code :::::: " + code);

        // Validation on fields
        validator.validate(loginForm, result);
        if (result.hasErrors()) {
            return "login";
        }



        // Checkign status is 200 or not

        if ((Integer.parseInt(code.toString())!= 200)) {
            model.addAttribute("formError", "true");
            return "login";
        }
        model.addAttribute(loginForm);
        return "redirect:dateEntry";

    }    

どこが間違っていますか?

4

1 に答える 1

0

301 は永続的なリダイレクトを意味します。古い URL へのリクエストを行っている可能性があります。Location 応答ヘッダーは、新しい URL が何であるかを示します。http://en.wikipedia.org/wiki/HTTP_301を参照

于 2012-10-20T10:13:44.973 に答える