Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 春季保安及;Wicket+;过滤器_Spring_Security_Wicket - Fatal编程技术网

Spring 春季保安及;Wicket+;过滤器

Spring 春季保安及;Wicket+;过滤器,spring,security,wicket,Spring,Security,Wicket,当使用Spring security保护Wicket应用程序时,使用的主要方法是在AuthenticatedWebSession中包含这样的构造: Authentication authentication = authenticationManager .authenticate(new UsernamePasswordAuthenticationToken(username, password)); SecurityContextHolder.getC

当使用Spring security保护Wicket应用程序时,使用的主要方法是在AuthenticatedWebSession中包含这样的构造:

    Authentication authentication = authenticationManager
            .authenticate(new UsernamePasswordAuthenticationToken(username, password));
    SecurityContextHolder.getContext().setAuthentication(authentication);
    authenticated = authentication.isAuthenticated();
与Spring安全相反,身份验证请求位于后端,因此任何HTTP请求处理都太迟了。也就是说,无论发生什么情况,整个Spring安全过滤器链都已关闭,请参见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);
    }
其中,requireAuthentication方法检查请求路径上的“j_spring_security_check”。当然,所采取的方法中没有任何内容

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

我的问题是-Wicket改编是否有一个严肃的春季安全性?我的意思是,它应该跳过这个链,但是触发所有那些通常从后端运行的操作,就像Wicket所做的那样


谢谢

你读过/看过吗?首先让我感到奇怪的是,页面上没有Wicket安全注释,spring安全配置本身也有拦截模式。第二件事是SecurityContextPersistenceFilter和调用httpSession.setAttribute。但是,它真的功能齐全吗?此外,他们为什么使用session=never?Wicket有自己的基于注释的角色安全机制。所以不需要直接使用Spring注释,只要您可以在Spring角色和Wicket角色之间创建一个适配器即可。也许可以看看,即使使用了稍旧的弹簧和导叶,原理也是一样的。