Я пытаюсь добавить пружину с защитой пружины в существующее приложение на основе Struts.Это частичная миграция.Вся новая разработка должна произойти в Spring.
Итак, что я хочу,
- Доступ пользователя к защищенному URL-адресу
- Если пользователь не аутентифицирован, Spring следует перенаправитьна определенный URL-адрес (это будет URL-адрес Struts)
- После того, как модуль Old Struts выполняет свою работу по аутентификации пользователя, он сохраняет объект в сеансе HTTP, который отображает аутентифицированного пользователя.
- SpringДолжен получить этот объект из сеанса и пройти проверку подлинности пользователя.
- Перенаправить пользователя на запрошенный защищенный URL
Я пытался использовать formlogin().loginpage(<Struts_URL>)
.Также в коде Struts после аутентификации я обновил 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 Spring
...
MyUserDetails lUserDetails = new MyUserDetails(pUserName, pRole);
Authentication auth = new UsernamePasswordAuthenticationToken(lUserDetails, null, lUserDetails.getAuthorities());
SecurityContext securityContext = SecurityContextHolder.getContext();
securityContext.setAuthentication(auth);
...
Пользователь перенаправляется на страницу Struts, когда он получает доступлюбой Spring URL Но это происходит, даже если пользователь аутентифицирован.
Я не очень знаком с Spring Security, какие-либо предложения или помощь?