/loginForm?error가 발생하며 로그인이 안 됩니다.
1995
1 câu hỏi đã được viết
4강을 수강하는 중에 생긴 오류입니다.
회원가입은 정상적으로 작동하는데 로그인을 하려고 하면 아래 사진처럼 오류가 발생합니다.강의를 여러번 돌려보며 코드는 똑같이 따라했고, 콘솔에 찍히는 것을 보면 제가 로그인 하고자 하는 username도 잘 찍힙니다. (회원 정보를 찾는 것까지는 정상적인 거 같습니다)

import org.springframework.boot.web.servlet.view.MustacheViewResolver;
// 이 import문에서 reactive로 하라고 하셨는데 그걸로 바꾸면 아래의 setCharset, setContentType 등에서 오류가 발생하여 servlet으로 하였습니다.
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
MustacheViewResolver resolver = new MustacheViewResolver();
resolver.setCharset("UTF-8");
resolver.setContentType("text/html;charset=UTF-8");
resolver.setPrefix("classpath:/templates/");
resolver.setSuffix(".html");
registry.viewResolver(resolver);
}
}@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
public BCryptPasswordEncoder encodePwd(){
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/user/**").authenticated()
.antMatchers("/manager/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')")
.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.anyRequest().permitAll()
.and()
.formLogin()
.loginPage("/loginForm")
.loginProcessingUrl("/login")
.defaultSuccessUrl("/");
}
Câu trả lời 5
0
저도 db에 생성한 계정이 있고 , 로그인시도시 loginForm?error로 이동되는 현상이 있었습니다.
SpringSecurity가 버전업으로 기존 방식이 deprecated되어서
authorizeHttpRequests(Customizer...)가 제공하는 템플릿에 강의 내용을 적용했었는데요.
이 템플릿 하단에 첨부되었던 userDetailService 블럭을 주석처리하여 해결하였습니다.
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf((csrf)->csrf.disable())
.authorizeHttpRequests((authorizeHttpRequests) ->
authorizeHttpRequests
.requestMatchers("/user/**").authenticated()
.requestMatchers("/admin/**").hasRole("ADMIN")
.requestMatchers("/manager/**").hasAnyRole("ADMIN", "MANAGER")
.anyRequest().permitAll()
)
.formLogin((formLogin) ->
formLogin
// .usernameParameter("username") // 파라미터로 보낼 이름값 설정하는 부분. username이라고 안쓰고 다른이름 쓰고 싶은 경우 for loadUserByUsername
// .passwordParameter("password")
.loginPage("/login")
// .failureUrl("/authentication/login?failed")
.loginProcessingUrl("/loginProc") // login주소가 호출되면 시큐리티가 낚아채서 대신 로그인 진행
.defaultSuccessUrl("/")
);
return http.build();
}
// auth에서 따로 관리하므로 해당 Bean은 불필요하다.
// @Bean
// public UserDetailsService userDetailsService() {
// PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
// String pw = encoder.encode("password");
// UserDetails user = User.withUsername("user")
// .password("1234")
// .roles("USER")
// .build();
// UserDetails admin = User.withUsername("admin")
// .password("password")
// .roles("ADMIN", "USER")
// .build();
//
// return new InMemoryUserDetailsManager(user, admin);
// }
0
저도 같은 에러를 겪어서 Github 소스코드랑 비교했는데 잘 돌아가더라구요. 비교해보니 저는 PrincipalDetailsService에서 @Service Annotation을 빼먹었더라구요. 서비스가 IoC가 안됬으니 로그인이 안되는 게 당연하고...
혹은 PrincipalDetails에서 전부 return true;로 되어있는지 확인해보세요.
0
혹시 스프링 부트 몇 버전인가요?
WebSecurityConfigurerAdapter 는 이제 사용하지 않는 걸로 알고있습니다
이 강의가 꽤 오래 전 강의라서 스프링 시큐리티가 많이 바꼈더라고요..
0
우선
http://localhost:8080/loginForm?error
라고 뜨는 것은 로그인 시 잘못된 아이디와 비밀번호를 입력했을 때 스프링 시큐리티가 자동적으로 보내주는 파라미터인 것 같습니다. 그래서 이건 정상 동작입니다.
혹시 아이디와 비밀번호를 입력했을 때 화이트 라벨 에러 페이지가 나오나요?
0
제가 빠트렸던건 저 부분이라서 에러가 발생했었는데 그외는 잘 모르겠네요 하루가 지났으니 저장과 서버 재실행은 무조건하셨을거같은데 에러로그를 상세히 보여주셔야 다른분들도 도와주실수있을거같아요!
0
application.yml 파일에
jpa ddl-auto: create 에서 update로 바꾸셨나요??
JWT를 구현한 다음 이 API를 호출해서 사용하는 것은 프론트엔드 쪽에서 하는 역할인가요?
0
96
1
Jwt쓰면 스프링시큐리티는 필수적으로 사용해야하나요?
0
401
1
13:23 system.out 출력문이 다르게 나옵니다.
0
130
1
수료증 문의
0
226
2
9분대에 질문이 있습니다 !
0
114
1
password 비교를 하지 않았는데 어떻게 인증이 통과된 건가요?
0
321
1
이전 강의 참고하라는 말씀
0
253
1
강의 실습하다가 막히는 분들 참고(2024년8월 기준)
2
1116
2
구글 소셜 로그인 302
0
200
1
오류 문의 _ org.springframework.orm.jpa.JpaSystemException: could not deserialize
1
584
1
[자바] 시큐리티 Config 참고
13
953
1
이론강의
0
280
1
SpringSecurity JWT 로그인 URL 2개 설정하는 방법
0
487
1
2024.06기준) 최근 SecurityConfig 설정 문의
0
921
3
구글 로그인시 authentication이 null 값이라고 에러가 발생합니다.
0
678
2
특정 url필터 거는 방법 이슈
0
422
1
강사님께서 말씀하시는 시큐리티세션이 SecurityContext인가요?
0
278
1
25강 마지막 테스트에서 오류
1
1044
2
jwt를 저장하는 위치에 궁금한 점이 있습니다.
0
298
1
mustache를 사용하지 않고 thymeleaf를 사용하려고 하는데
0
697
1
세션 인증방식이 REST 원칙에 위배되는 건가요?
0
340
1
jwt와 실제데이터의 관계
1
243
1
jwt 와 세션ID의 관계
1
313
1
SecurityConfig에서 세션 설정, 인가 설정
0
421
1

