Spring security& Wicket +过滤器

时间:2014-02-14 20:01:35

标签: spring security wicket

使用Spring安全性保护Wicket应用程序时使用的主要方法是在AuthenticatedWebSession中包含此类构造:

    Authentication authentication = authenticationManager
            .authenticate(new UsernamePasswordAuthenticationToken(username, password));
    SecurityContextHolder.getContext().setAuthentication(authentication);
    authenticated = authentication.isAuthenticated();

与Spring Security相反,身份验证请求来自后端,因此任何HTTP请求处理都为时已晚。那说整个Spring Security过滤器链都是DOWN无所谓,请参阅 AbstractAuthenticationProcessingFilter 中的这一行:

 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        if (!requiresAuthentication(request, response)) {
            chain.doFilter(request, response);

            return;
        }

        // (...) "normal" Spring authentication process which will never take place

        successfulAuthentication(request, response, chain, authResult);
    }

requiresAuthentication方法检查请求路径上的“j_spring_security_check”。当然,采取的方法并不存在。

结果是什么?由于您仅依赖于从应用程序上下文获取的AuthenticationManager,因此通常在过滤器链中触发的操作不会发生:例如,Spring remember-me服务将无法工作。过滤器方法中正在设置Cookie,过早返回。可以读取Cookie,但它们不存在。

我的问题是 - Wicket改编是否有严格的Spring Security?我的意思是它应该跳过链但是触发所有那些通常在后端运行的动作,就像Wicket所做的那样。

谢谢!

0 个答案:

没有答案