1

私は Spring Security で開発の成功と失敗のハンドラーをしています。

デバイスの種類に応じて、1 つの html ビューを表示するか、1 つの json 応答を送信する必要があります。この目的のためにSpring Mobileを使用していますが、HttpServletRequestでDeviceオブジェクトを作成すると見つかりません。何かアイデア?

web.xml

<filter>
    <filter-name>deviceResolverRequestFilter</filter-name>
    <filter-class>org.springframework.mobile.device.DeviceResolverRequestFilter</filter-class>
</filter>

ApplicationContext.xml

<mvc:annotation-driven>
    <mvc:argument-resolvers>
        <bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" />
    </mvc:argument-resolvers>
</mvc:annotation-driven>

クラス

public class AuthFailureHandler implements AuthenticationFailureHandler{

    @Override
    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException ae) throws IOException, ServletException {

        Device device = DeviceUtils.getCurrentDevice(request);

        if(device.isNormal()){

            response.sendRedirect(response.encodeRedirectURL("./userNoAuth"));
        } else {

            response.sendRedirect(response.encodeRedirectURL("./rest/userNoAuth"));
        }
    }
}

エラー

java.lang.NullPointerException at com.myapp.security.handler.AuthFailureHandler.onAuthenticationFailure(AuthFailureHandler.java:19)

アップデート:

.getCurrentDevice(HttpServletRequest) メソッドを getRequiredCurrentDevice(HttpServletRequest) に変更しています。

今、私はこのエラーを受け取ります。

java.lang.IllegalStateException: No currenet device is set in this request and one is required - have you configured a DeviceResolvingHandlerInterceptor?
4

1 に答える 1