2011-03-24 143 views
3

我们正在开发使用Java和春天有个网站。作为服务器,我们使用基于Tomcat 6.0.29的自定义服务器。 在web.xml文件中有这样的自定义验证过滤声明:Spring Security的401错误自定义验证过滤器

<security:custom-filter ref="extraFieldAuthenticationProvider" 
     before="FORM_LOGIN_FILTER"/> 

与下列一起:

<security:form-login login-page="/view/page/login" 
     default-target-url="/view/page/display" 
     authentication-failure-handler-ref="CustomAuthenticationFailureHandler" 
     authentication-success-handler-ref="CustomAuthenticationSuccessHandler"/> 

以下是extraFieldAuthenticationProvider类:

public class ExtraFieldAuthenticationFilter 
     extends UsernamePasswordAuthenticationFilter { 
    private final static Logger LOG = 
      Logger.getLogger(ExtraFieldAuthenticationFilter.class.getName()); 

    @Override 
    protected String obtainUsername(HttpServletRequest request) { 
     String userName = super.obtainUsername(request); 
     String type = request.getParameter(WebConstants.PARAM_J__TYPE); 
     return StringUtils.join(new String[]{type, userName}); 
    } 
} 

问题是不成功的登录,我得到一个Tomcat 401错误。控制不在CustomAuthenticationFailureHandler

任何想法PLZ? (BDW ...我是比较新的Spring Security的,我调试另一个人的代码)

非常感谢!

Krt_Malta

回答

1

作为服务器,我们使用基于Tomcat的6.0.29定制服务器。

您首先需要验证问题是否与你的Tomcat服务器的配置(例如,是Tomcat的认证成立,是希望你在你的Tomcat服务器配置提供客户端证书(clientAuth="true")等

如果您可以验证控件或不获取过去初始Tomcat的身份验证Spring Security的,那么有可能是不同的解决方案。您还没有与所有相关的代码提供给我们,但看起来像的代码被检查额外形式参数连同认证请求被传递,这将在WebConstants.PARAM_J__TYPE常数来定义。

相关问题