2

SpringMVC3アプリでコンテンツネゴシエーションを次のように構成しました。

        <bean
            class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
            <property name="order" value="0" />
            <property name="favorPathExtension" value="true" />
            <property name="defaultContentType">
                    <ref bean="htmlMediaType" />
            </property>
            <property name="mediaTypes">
                    <map>
                            <entry key="json" value="application/json" />
                            <entry key="xml" value="application/xml" />
                    </map>
            </property>
            <property name="defaultViews">
                    <list>
                            <bean
                                    class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
                                    <property name="objectMapper" ref="jacksonObjectMapper" />
                            </bean>
                            <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                                    <property name="marshaller">
                                            <bean class="org.springframework.oxm.castor.CastorMarshaller" />
                                    </property>
                            </bean>
                    </list>
            </property>
            <property name="viewResolvers">
                    <ref bean="tilesViewResolver" />
            </property>
    </bean>

これは非常にうまく機能します。すべてのビューは、「通常の」ビューテンプレートを使用したhtmlビューとして、または「Accept」ヘッダーに応じてビューモデルデータのJSONまたはXMLダンプとしてレンダリングされます。

しかし、これは私にはちょっとしたセキュリティホールのようです。私のアクションのいくつかはAPIスタイルのアクションであり、HTML、JSON、またはXMLで合法的に利用できます。ただし、一部のビューはHTMLのみを対象としています。URLに「.json」を追加するだけでエンドユーザーがすべてのビューデータを表示できるようにしたくはありません。

Spring MVCでコンテンツネゴシエーションを行う方法はありますが、明示的にオプトインしているアクションに対してのみです。次のようなコントローラーアノテーションを設定できます@RespondsTo("xml", "json")か?

4

3 に答える 3

1

DelegatingFilterProxy によるフィルターを使用して、ユーザーが不要なコンテンツ タイプにアクセスするのをブロックしないのはなぜですか?

于 2012-01-06T18:55:19.710 に答える
0

これを行う 1 つの方法は、Spring Security を使用して、コンテンツ タイプ (またはコンテンツ ネゴシエーションに使用しているその他の方法) に基づいて表示できるページを制限することです。

于 2012-01-06T18:12:43.337 に答える