60

Flex ベースのフロント エンドと Spring/Hibernate バックエンドを備えたアプリを開発しています。

現在の方法で Facebook 統合を機能させるには、バックエンドのフロントエンドで JavaScript に設定された Cookie を読み取り、ログイン中に検証を行って、ユーザーが Facebook を偽装しようとしているかどうかを確認する必要があります。ログインする。

これは非常に簡単ですが、HttpServletRequest を取得する方法がわかりません。私はかなり基本的な Spring 構成を使用しています (これは私の最初の本物の Spring アプリであり、今ではかなり慣れていますが、見たことのないものがたくさんあります)。

Spring MVC や Spring WebFlow などは使用していません。ServletContext を取得できますが、リクエストを取得する方法がまだわかりません。

何か助けはありますか?

4

6 に答える 6

162

FlexContextが利用できない場合:

解決策1:メソッド内(> = Spring 2.0が必要)

HttpServletRequest request = 
        ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes())
                .getRequest();

解決策2:内部Bean(> = 2.5でサポート、単一のBeanにはSpring 3.0が必要です!)

@Autowired
private HttpServletRequest request;
于 2009-11-25T10:13:25.220 に答える
11

これは一種のFlex/BlazeDS固有ですが、これが私が思いついた解決策です。私自身の質問に答えるのが偽物の場合は申し訳ありません。

    HttpServletRequest request = flex.messaging.FlexContext.getHttpRequest();

    Cookie[] cookies = request.getCookies();

    for (Cookie c:cookies)
    {
        log.debug(String.format("Cookie: %s, %s, domain: %s",c.getName(), c.getValue(),c.getDomain()));
    }

それは動作します、私はクッキーを取得します。私の問題は春に目を向けることでした-BlazeDSはそれを持っていました。春もそうかもしれませんが、どうやって行くのかまだわかりません。

于 2009-02-17T23:40:20.260 に答える
10

@eeezyy の回答はうまくいきませんでしたが、私は Spring Boot (2.0.4) を使用しており、異なる場合がありますが、2018 年のバリエーションは次のように機能します。

@Autowired
private HttpServletRequest request;
于 2018-11-07T16:01:32.923 に答える
5

注釈 (この@Context質問の回答を参照してください: What does context annotation do in Spring? ) により、それが挿入されます。

私は使用しなければならなかった

@Context
private HttpServletRequest request;
于 2016-02-07T12:36:42.237 に答える