美好的一天,
在此之前,我有一个使用 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/