티스토리 뷰
반응형
- spring security 설정을 한 뒤, 로그인 테스트 중
Caused by: java.lang.NullPointerException: null
at com.swg.web.service.LoginService.loadUserByUsername(LoginService.java:32) ~[main/:na]
at org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:93) ~[spring-security-core-5.4.1.jar:5.4.1]
... 54 common frames omitted
- loadUserByUsername()에서 nullException이 나와 확인을 해보니 파라미터로 전달 받은 username이 null로 넘어온것이 확인됬다...
@RequiredArgsConstructor
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final LoginService loginService;
...
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(loginService)
.passwordEncoder(passwordEncoder());
}
}
@Service
@RequiredArgsConstructor
public class LoginService implements UserDetailsService {
private final UserService userService;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Optional<com.swg.common.domain.User> memberEntityWrapper = userService.findByNickNm(username); //NullPointerException 발생
com.swg.common.domain.User userEntity = memberEntityWrapper.orElse(null);
List authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority(userEntity.getRole().getKey()));
return new User(userEntity.getNickNm(), userEntity.getPwd(), authorities);
}
}
- 구글링 해보니,
- 매개변수 전달시 매개 변수명은 닉네임의 경우 username, 비밀번호의 경우 password로 넘겨줘야하고
- Content-Type을 application/x-www-form-urlencoded로 전달해야 한다고 한다...
- 작업했던 코드를 확인해보니 json으로 넘겨주고 있어, application/x-www-form-urlencoded로 변경해주니 정상적으로 로그인이 되는것이 확인되었다...
const data = {
username: $('#nickNm').val(),
password: $('#pwd').val()
};
$.ajax({
type: 'POST',
url: '/signup',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data)
}).done(function (res) {
alert("회원가입 되었습니다.");
location.href = "/"
}).fail(function (error) {
alert(JSON.stringify(error));
});
// ->
const data = {
username: $('#nickNm').val(),
password: $('#pwd').val()
};
$.ajax({
type: 'POST',
url: '/signin',
dataType: 'json',
contentType: 'application/x-www-form-urlencoded; charset=utf-8',
data: data
}).done(function (res) {
alert("로그인 되었습니다.");
location.href = "/"
}).fail(function (error) {
alert(JSON.stringify(error));
});
반응형
'[Spring Framework]' 카테고리의 다른 글
[Spring] Spring 애플리케이션에서 테스트하기 (1) | 2022.09.23 |
---|---|
[Spring] AspectJ, Spring AOP : AOP 라이브러리 비교 (1) | 2022.09.20 |
[Spring] Swagger 한글 깨짐 (0) | 2021.03.10 |
[Spring] Swagger 사용법 (0) | 2021.03.10 |
[spring] private와 inner method에서의 spring trasaction 동작 (0) | 2019.05.22 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- java11
- JAVA8
- Executor
- Redis
- spring-security
- junit5
- 확인창
- Thread
- thread priority
- ThreadPool
- Mockito
- JPA
- IntelliJ
- sgw
- jdk12
- spring
- gradle
- 한글깨짐
- JUnit
- jdk13
- Jenkins
- chmod
- 카멜 표기법
- JetBrains Mono
- 파스칼 표기법
- java
- hot-deploy
- aspectj
- Visual Studio 2022
- codepoint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함