春のセキュリティの認証フィルターとともに、キャプチャ検証フィルターという名前の別のフィルターを追加しようとしています。このエラーが発生しています。私が欠けているものは何ですか?Bean の初期化に失敗しました。ネストされた例外は org.springframework.beans.ConversionNotSupportedException です: タイプ 'java.util.LinkedHashMap' のプロパティ値をプロパティ 'filterChainMap' の必要なタイプ 'java.util.Map' に変換できませんでした。ネストされた例外は java.lang.IllegalStateException: プロパティ 'filterChainMap[/**][3]' のタイプ [com.asu.edu.base.vo.CaptchaFilterVO] の値を必要なタイプ [javax.servlet.Filter] に変換できません: 一致するエディターまたは変換戦略が見つかりません
私の .java ファイル
public class CaptchaFilterVO {
@Autowired
private ReCaptcha reCaptcha = null;
public void doFilterInternal(HttpServletRequest req, HttpServletResponse res,
FilterChain chain) throws IOException, ServletException {
String recaptcha_response = req.getParameter("recaptcha_response_field");
String recaptcha_challenge = req.getParameter("recaptcha_challenge_field");
String remoteAddress = req.getRemoteAddr();
ReCaptchaResponse reCaptchaResponse = this.reCaptcha.checkAnswer(
remoteAddress, recaptcha_challenge, recaptcha_response);
if (!reCaptchaResponse.isValid()) {
System.out.println("Captcha worong. Please try again.");
}
else
{
System.out.println("Captcha correct. No need to try again.");
}
chain.doFilter(req, res);
}
}
springsecurity.xml
<http auto-config="true">
<!-- intercept-url pattern="/welcome*" access="ROLE_DEPARTMENT_MGR,ROLE_REGULAR_EMP,ROLE_GUEST_USR,ROLE_CORPORATE_MGR" />
<intercept-url pattern="/admin*" access="ROLE_ADMIN" /-->
<intercept-url pattern="/login" filters="none" />
<intercept-url pattern="/resources*" filters="none" />
<intercept-url pattern="/register" filters="none" />
<intercept-url pattern="/logout" filters="none" />
<intercept-url pattern="/loginfailed" filters="none" />
<intercept-url pattern="/admin*" access="ROLE_ADMIN" />
<intercept-url pattern="/Dashboard*" access="ROLE_DEPARTMENT_MGR,ROLE_REGULAR_EMP,ROLE_CORPORATE_MGR" />
<intercept-url pattern="/*" access="IS_AUTHENTICATED_FULLY"/>
<form-login login-page="/login" default-target-url="/"
authentication-failure-url="/loginfailed" />
<logout logout-success-url="/logout" />
<custom-filter ref="captchaVerifierFilter" after="FORM_LOGIN_FILTER"/>
</http>
<beans:bean id="captchaVerifierFilter" class="com.asu.edu.base.vo.CaptchaFilterVO"/>
<beans:bean id="springSecurityFilterChain" class="org.springframework.web.filter.DelegatingFilterProxy"/>
<beans:bean id="myfilterChainProxy" class="org.springframework.security.web.FilterChainProxy">
<filter-chain-map path-type="ant">
<filter-chain pattern="/*" filters="springSecurityFilterChain,captchaVerifierFilter"/>
</filter-chain-map>
</beans:bean>
編集: public class CaptchaFilterVO extends OncePerRequestFilter implements javax.servlet.Filter 今、私は OncePerRequestFilter クラスを拡張しましたが、クラッシュに直面しています。助けてください。org.springframework.web.util.NestedServletException: リクエストの処理に失敗しました。ネストされた例外は org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [org.springframework.http.HttpRequest]: 指定されたクラスはインターフェース org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) org です.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org .springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.