java - 如何将 spring 2 中的 AuthenticationProcessingFilterEntryPoint 转换为 spring 4

标签 java xml spring authentication filter

美好的一天,

在此之前,我有一个使用 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 类中做一些事情,但我真的不知道如何编码。我尝试用谷歌搜索,但没有得到我想要的东西,我相信我没有正确地谷歌搜索。

请多多指教。

最佳答案

类(class)

org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint

已重命名为

org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint

此外,loginFormUrl 已成为构造函数参数。

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

关于java - 如何将 spring 2 中的 AuthenticationProcessingFilterEntryPoint 转换为 spring 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57624292/

相关文章:

java - 用 Java 设计源代码编辑器,设计问题 :

java - 如何避免在 Activity 之间切换时出现白屏

xml - USPS - 如何通过 API 获取国际运费?

java - 如何将 Class 值设置为 spring bean 属性?

java - JLabel 文本在透明背景上被覆盖

java - HttpSessionListener 是否一直有效?

java - Spring boot,如何禁用 springSecurityFitlerChain 的自动配置

angularjs - 在 Spring Security 或 Angular 中注销时清除 Cookie

android - Listview改变键盘打开其他 View 的位置

c# - XML 格式错误