본문 바로가기
프로젝트/Spring Boot 블로그프로젝트

[블로그프로젝트] 15. 스프링시큐리티로 로그인하기(2)

by dantriss 2023. 5. 19.

유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


로그인을 할 때 로그인한 아이디를 확인해보기위해 콘솔에 찍어보면 넘어오는 값이 없어서 null 이 찍혔다.

{"status":500,"data":"Cannot invoke \"com.blog.config.auth.PrincipalDetail.getUsername()\" because \"principal\" is null"}

어떠한 문제때문에 로그인할 때 값이 전달되지 않는지 확인해보니

PrincipalDetailService에 있는 loadUserByUsername 이라는 이름의 메서드를 오버라이딩을 하고 있는데 확인해보면

이런식으로 username을 사용하고 있다.

 

하지만 나는 user_id라는 변수명과 js에서도 userId라는 값을 사용하고 있었다.

그래서 user_id라고 사용하고 있는 변수명과 User.java에서도 변경하고

User.js와 loginForm.jsp 파일전부 user_id 나 userId 에서 username으로 변경해주었다.

user.js
loginForm.jsp

 

참고로 맥기준 cmd+shift+f 윈도우기준 ctrl+shift+f 를 누르면 프로젝트 전체내에서 검색할 수 있는 기능이 있어서 user_id를 썼던 부분을 username으로 변경해주었다.

application.yml에서 create로 전체적으로 한번 초기화 한후 다시한번 회원가입-로그인을 진행해보자.

 

실행을한 후 홈페이지에가서 회원가입을 시도하면

콘솔에서 회원가입할 때 유저의 ID를 확인할 수 있고 

 

DB를 확인해보면 비밀번호는 암호화되어서 들어가있는걸 볼 수 있다.

 

로그인이 잘되는지 확인해보기위해서 콘솔에 찍어보면 아주 잘 작동하는것을 확인할 수 있다.

 

이작은거로 며칠동안 찾아보고 또 여러가지를 시도해본지 모르겠지만.. 그래도 해결하니 기분은 좋았다.

 

아직도 왜 jstl을 사용할 수 없는지모르겠으며 antMatchers는 버전을 바꾸니 사용은 가능했었지만 다른 오류가 있어서 일단

 anyRequest()와 authenticated는 주석으로 막아 모든접근을 허용한 상태로 작업을 진행중에 있다.

해당부분들도 얼른 방법을 찾아서 해결하고 싶다.

 

 

*클론코딩을 할 땐 마음대로 변수명이나 js에서 name값을 마음대로 하지말자... 헷갈리고 나중에 문제가 생길 수도 있다..ㅠ

 

참고한 블로그 : https://stir.tistory.com/266

 

댓글