- 구글에서 MySQL 검색
- MySQL.com에서 downloads 탭 들어가서 이미지대로 진행
- 설치파일 실행한디 그대로 Next한 후 Execute
- 기다림ing......
- 루트 비밀번호만 설정하면 됨
- 그 외는 전부 손대지 말고 next 클릭
- sckemas에서 new Sckemas 한 후 이름은 springdb utf8로 설정 후 apply해서 새로운 스키마 생성
- 프로젝트 명은 SpringSecurity
- MVC Project 선택 후 Next
- 패키지명은 com.mycom.myapp
- pom.xml에서 자바 버전은 1.8로 변경
- 스프링프레임워크 버전은 5.2.15로 변경
- servlet 버전은 3.1로 변경
- id는 javax.을 앞에 추가해줌
- .jsp 버전도 2.3.1로 변경
- properties의 Project Facets에서 버전 변경하면 오류 다 사라짐
- 서버 정상작동 확인 완료
- MVN 저장소에서 spring-jdbc 검색
- pom.xml에 버전 5.2.15 코드 추가
- MVN 저장소에서 mysql 검색
- pom.xml에 버전 8.0.16 코드 추가
- MVN 저장소에서 HikariCP 검색
- pom.xml에 버전 3.3.1 코드 추가
- MVN 저장소에서 lombok 검색
- pom.xml에 버전 1.18.12 코드 추가
- MVN 저장소에서 jackson-databind 검색
- pom.xml에 버전 2.12.1 코드 추가
- 테이블에서 새로운 테이블 tbl_member 생성
- 테이블명, 칼럼의 이름 및 데이터타입 설정 후 Apply
- 테이블 생성 확인
- 새로운 테이블 tbl_member_auth 생성
- 칼럼의 이름 및 데이터타입 설정
- 하단 Forign Keys를 선택해서 포링키 등록하고 Apply
- cascade를 잡아주면 부모키를 지우면 자식키도 자동으로 삭제됨
- tbl_member의 칼럼 추가
- web.xml에 filter 태그를 추가해서 스프링에서 한글이 지원되도록 함
- filter와 filter-mapping의 이름은 같아야 함! 아니면 서블릿이 검색이 안됨
- MVN 저장소에서 spring security core 검색
- pom.xml에 버전 5.2.1 코드 추가
- MVN 저장소에서 spring security web 검색
- pom.xml에 버전 5.2.1 코드 추가
- MVN 저장소에서 spring security config 검색
- pom.xml에 버전 5.2.1 코드 추가
- MVN 저장소에서 spring security taglibs 검색
- pom.xml에 버전 5.2.1 코드 추가
- web.xml에서 context-param 태그에 /WEB-INF/spring/security-context.xml 추가
- spring 폴더에서 우클릭 후 Sping Bean Configuration File 선택해서 security-context.xml 생성
- security-context.xml의 Namespaces에서 security 선택하고 버전은 없는 것으로 선택 후 저장
- Source로 돌아가보면 beans 추가됨
- 정상적으로 작동 함
- 암호화는 스프링이 해주는 것이므로 클래스를 적어줘야함
- com 패키지에 mysecurity.domain을 추가
- mysecurity.domain에 CustomUserDetailsService 클래스 생성
- security-context.xml의 security 코드 작성
- UserDetailsService 상속 받은 후 오버라이드
- utf-8 추가한 후 a태그에 로그인 연결
- HomeController에 우선 login 메서드 생성
- login.jsp를 만들고 ID, PWD, 버튼 생성
- 화면 잘 나옴
- Security가 적용되지 않아서 화면이 잘 출력되는 것
- <sercurity:http> 태그 안에 <security:csrf disabled="true"/> 태그 추가
- web.xml에 Security 관련 filter 추가
- 잘 적용되어서 내가 만들지 않은 웹페이지가 나타남!
- 이제 Security가 적용이 된 것!
- 메서드는 login, 보내주는 데이터의 name은 username, password를 사용하는 것은 약속이므로 반드시 이 이름으로 사용해야 함!
- Spring Security의 전반적인 과정을 보여주는 이미지
- 가장 먼저 필터가 적용됨, 그다음 매니저, provider, UserDetailsService가 작동한 후 User로 감
- Session에 있나요라고 물어보는게 SecurityContext안에 있냐고 물어보는 것과 똑같음