1

認証またはロールに基づいてオブジェクトのプロパティをフィルター処理したいと考えています。したがって、たとえば、認証されたユーザーに対しては完全なユーザー プロファイルが返され、認証されていないユーザーに対してはフィルター処理されます。

どうすればそれを達成できMappingJacksonHttpMessageConverterますか? Jaskon のカスタム Bean を既に宣言しています。

 <bean id="objectMapper" class="com.example.CustomObjectMapper"/>

    <bean id="MappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="objectMapper" ref="objectMapper"/>
    </bean>

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="order" value="1" />
        <!-- <property name="customArgumentResolver" ref="sessionParamResolver"/> -->
        <property name="webBindingInitializer">
        <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
            <!-- <property name="conversionService" ref="conversionService" />  -->
            <!-- <property name="validator" ref="validator" /> -->
        </bean>
        </property>
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
                <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
                <bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />
                <bean class="org.springframework.http.converter.FormHttpMessageConverter" />
                <ref bean="MappingJacksonHttpMessageConverter"/>
            </list>
        </property>
    </bean>

注: コントローラーでは、次のように結果を書き込んでいます。

public void writeJson (Object jsonBean, HttpServletResponse response) {
        MediaType jsonMimeType = MediaType.APPLICATION_JSON;
        if (jsonConverter.canWrite(jsonBean.getClass(), jsonMimeType)) {
            try {
                jsonConverter.write(jsonBean, jsonMimeType, new ServletServerHttpResponse(response));
            } catch (IOException m_Ioe) {
            } catch (HttpMessageNotWritableException p_Nwe) {
            }   catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            log.info("json Converter cant write class " +jsonBean.getClass() );
        }
    }
4

2 に答える 2

0

fullProfile2 つの異なるタイプの JSON オブジェクト (例:と)を返したい場合はpartialProfile、2 つの異なる URL を持つ 2 つの異なるサービスを作成するのが最善です。次に、Spring Security のIntercept-urlタグを使用して、通常の方法でこれらの URL へのアクセスを制御できます。

于 2012-05-09T11:59:00.500 に答える