KJN
236
2021-08-24 11:06:15 작성 2021-08-24 11:08:40 수정됨
0
116

멀티로그인이 왜 안되는걸까요


spring security를 사용해 로그인을 작성 중입니다.

현재, 관리자로그인, 일반 로그인 두가지 로그인은 작업이되었고, 일반로그인에서 두번째 로그인 기능을 추가해야합니다.


securityConfig은 대충 이러합니다

관리자로그인

@Order(1)
@Configuration
@RequiredArgsConstructor
public static class AdminConfigurationAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/admin/**")
.authorizeRequests().anyRequest().hasRole("MANAGER")
.and()
.formLogin()
.loginPage("/admin/login")
.successHandler(adminSuccessHandler())
.failureHandler(adminFailureHandler())
.permitAll()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/").invalidateHttpSession(true)
.permitAll()
.and()
.csrf().disable();
}

일반로그인

@Order(2)
@Configuration
@RequiredArgsConstructor
public static class NormalConfigurationAdapter extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers(
"/contents", "/views/**").authenticated()
.and()
.formLogin()
.loginPage(
"/login")
.loginProcessingUrl(
"/login")
.successHandler(successHandler())
.failureHandler(failureHandler())
.permitAll()
.and()
.logout()
.logoutRequestMatcher(
new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl(
"/")
.invalidateHttpSession(
true)
.and()
.csrf().disable()
;
}

그리고 특정 경로에서는 로그인 성공시 다른 페이지로 이동해야해서 로그인 어댑터를 추가하면 되리라 생각하고 작업을 했습니다.

추가 일반로그인

@Order(3)
@Configuration
@RequiredArgsConstructor
public static class EventConfigurationAdapter extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers(
"/test", "/views/**").authenticated()
.and()
.formLogin()
.loginPage(
"/test/login")
.loginProcessingUrl(
"/test/login")
.successHandler(eventSuccessHandler())
.failureHandler(eventFailureHandler())
.permitAll()
.and()
.logout()
.logoutRequestMatcher(
new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl(
"/")
.invalidateHttpSession(
true)
.and()
.csrf().disable()
;
}

로그인 순서는 로그인을 시도 시 service로 가서 로그인정보 확인. 로그인 정보가 맞다면 controller로 넘어가 페이지 이동을 하는 순서입니다.


그런데 일반로그인은 service로 넘어가는데, 추가한 로그인은 service로 넘어가지않고, 곧바로 Authentication이 없다며 에러로 넘어가는데, 에러메시지도 출력되지않습니다.


디버그를 찍어보아도 어디서 멈추는 부분도 없어서 어디부터 확인해야하는지 모르겠습니다.

멀티로그인 작업이 저렇게 하는 것이 아닌가요?


수정)

수정하겠습니다. 추가하고나니 일반로그인 1이 되지않고, 일반로그인 2가 로그인됩니다.

원인은 아직 불명입니다.

0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.