我试图在基于Struts的现有应用程序中添加具有弹簧安全性的spring。这是部分迁移。所有的新开发都应该在春季进行。
所以我想要的是
我尝试使用formlogin().loginpage(<Struts_URL>)
。同样在身份验证后的Struts代码中,我已经更新了Spring的SecurityContext
。
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(HttpSecurity pHttp) throws Exception
{
pHttp.antMatcher("/**").authorizeRequests()
.anyRequest().authenticated()
.and().formLogin().loginPage("/<Struts_Login_Entry>.do");
}
...
@Override
public void configure(WebSecurity pWeb) throws Exception
{
// All the Strtus URL has .do suffix so excluding it
pWeb.ignoring().antMatchers("/*.do", "/portal/**");
}
}
在Struts中进行身份验证之后
...
MyUserDetails lUserDetails = new MyUserDetails(pUserName, pRole);
Authentication auth = new UsernamePasswordAuthenticationToken(lUserDetails, null, lUserDetails.getAuthorities());
SecurityContext securityContext = SecurityContextHolder.getContext();
securityContext.setAuthentication(auth);
...
当用户访问任何Spring URL时,该用户将被重定向到Struts页面,但是即使该用户已通过身份验证,也会发生这种情况。
我对Spring Security不太熟悉,有什么建议或帮助吗?