【问题标题】:How to convert AuthenticationProcessingFilterEntryPoint in spring 2 to spring 4如何将spring 2中的AuthenticationProcessingFilterEntryPoint转换为spring 4
【发布时间】:2019-12-28 15:51:37
【问题描述】:

早安,

在此之前,我有一个关于 Spring security core 2.0.7 的旧项目。当用户未登录时,我只是在浏览器中浏览应用程序 URL,它会自动链接到 login.html 页面。 (假设我浏览了查看用户模式页面 url)

在spring security xml中,我有以下代码:

<security:http access-denied-page="/403_system.jsp" session-fixation-protection="newSession"
            entry-point-ref="authenticationProcessingFilterEntryPoint"
            access-decision-manager-ref="accessDecisionManager">
        <security:intercept-url pattern="/session_expired.jsp" filters="none"/>
        <!-- some other intercept-url here ...-->
        <security:intercept-url pattern="/common/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
        <security:intercept-url pattern="/common2/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

        <security:http-basic/>
    </security:http>

    <bean id="authenticationProcessingFilterEntryPoint" 
            class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
        <property name="loginFormUrl" value="/login.html" />
        <property name="forceHttps" value="${url.forceHttps}" />
        <property name="serverSideRedirect" value="${url.serverSideRedirect}" />
    </bean>

我相信是因为authenticationProcessingFilterEntryPoint,所以当它发现如果没有Authentication,就会直接指向/login.html

在新项目中,我们改为使用spring security 4.2.0,配置完全改变,以下是java代码中的安全配置部分:

@Override
  protected void configure(HttpSecurity http) throws Exception {

    // disable csrf
    http
        // UrlAuthorizationConfigurer
        .apply(new UrlAuthorizationConfigurer<>(getApplicationContext())).getRegistry()
        .accessDecisionManager(accessDecisionManager()).antMatchers("/myapps/**")
        .access("IS_AUTHORISED_SERVICE").and()

        .csrf().disable()
        // same frame
        .headers().frameOptions().sameOrigin().and()


        .authorizeRequests()

        // permit all
        .antMatchers("/session_expired.jsp", "/system_error.jsp", "/images/**", "/scripts/**",
            "/styles/**", "/public/**", "/admin/**", "/login*", "/logout*", "/resources/**")
        .permitAll()
        // the rest authenticate
        .anyRequest().authenticated()


        // require login
        .and().formLogin().loginPage("/login.html").successHandler(successHandler())
        .failureHandler(failureHandler()).loginProcessingUrl("/j_security_check").permitAll().and()
        .addFilterAfter(securityContextDetailsFilter(), UsernamePasswordAuthenticationFilter.class)
        .addFilterBefore(logoutFilter(), LogoutFilter.class);
  }

我相信我需要在UsernamePasswordAuthenticationFilter 类中做一些事情,但我真的不知道如何编写代码。我尝试用谷歌搜索,但没有得到我想要的东西,我相信我没有正确搜索它。

请多多指教。

【问题讨论】:

    标签: java xml spring authentication filter


    【解决方案1】:

    org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint

    已重命名为

    org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint

    loginFormUrl 也变成了构造函数参数。

    LoginUrlAuthenticationEntryPoint。重命名发生在 SEC-1160 12.05.2009 07:37:11

    【讨论】:

      猜你喜欢
      • 2018-12-17
      • 2022-01-22
      • 2015-05-01
      • 2019-12-16
      • 2018-04-04
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多