세션과 암호화, 복호화를 이용한 로그인과 로그아웃
회원등록시 아이디의 중복확인
먼저 아이디에 중복값을 받을 수 없게 하기 위해서 고유키를 할당해줌
↓ 중복된 아이디가 있는지 확인하기 위한 카운트 하나 받기 ↓
↓ int를 반환해줄거니까 selectone ↓
↓ id가 있는지 없는지확인하구 결과로 개수반환해주기 ↓
↓ 등록할 아이디가 없다면 실행하고 adds를 실행하고 ↓
등록할 아이디가 있다면(중복된다면) mAdds의 check에 false를 전달
암호화
WB와 WAS 사이의 암호화는 구간암호화라고 함
=> WB에서 암호화를 시작해서 WAS에서 복호화하고 WAS에서 암호화하고 WB에서 복호화 함
*WAS : 웹 어플리케이션 서버 ( TOMCAT류들 )
WAS내에서 진행되는 암호화와 복호화는 데이터암호화라고 함 일반적인 암호화
=> 받은 데이터를 DB에 넣기전에 암호화하는 것
DB에서는 DB암호화라는 것이 따로있음 INSERT할 때 자동으로 암호화가 걸리고 복호화가 되는 부분
컴퓨터에서 웹브라우저에 입력 할 때 구간암호화를 지원하는 것도 있음 EX ) 키보드보안
우리가 직접 암호화를 해서 저장을 하고 가져와서 화면에 가져올 때만 복호화해서 뿌려준다가 우리가 해야 할 주 작업
STATIC FINAL이면 고정되고 객체선언없이 사용가능 변경 불가능
한글은 BYTE가 달라서 안되고 영문으로만 16글자
해독하는 열쇠가 암호화 키
암호화키를 가지고 UTILS에가면 암호화와 복호화하는 애들이 있음 문자열을 주면 ENCRYPT가 암호화해줌
CommonProperties가 암호화 객체를 생성하는 애 생성할 때 방식지정해줘야 함 우리는 AES방식 쓸거니까
AES 작성
CIPHER는 암호화 객체 생성하고 암호화 모드 설정 및 키 할당을 해줌 => 암호화작업 => 결과는 바이트코드로 나옴
이걸 다시 문자열로 바꾸어주어야함 우리는 DB에서 VARCHAR를 사용하기때문.
이때 사용할 건 BASE64방식의 암호화를 사용 BASE64를 사용하여 암호화를 하면 알아서 문자열로 바꿔줌
바이트코드로 암호화를 하고 바이트코드를 문자열로 바꾸면서 암호화를 하면서 이중암호화를 함
BASE64를 마지막으로 암호화를 했으니 복호화할때에는 BASE64부터 복호화할거임
BASE64 복호화 객체를 생성후에 복호화를 함 => 바이트 배열로 나옴
바이트 배열을 AES복호화 할거임
암호화와 복호화는 역순으로 이루어짐
↓ 암호화와 복호화가 잘 되는지 확인해보기 ↓
세션(Session) : 임시 저장 공간. 사용자의 ip,mac주소, 브라우저에 따라 별도의 공간 제공
정해진 시간만큼만 가지고있음 사용자가 브라우저를 키고 서버에 접근을 하게되면 세션을 할당받음
Login : Session에 사용자 정보를 지정된 시간만큼만 보관하는 것
암호화와 세션을 이용한 로그인하기
로그인 : 세션에 사용자 정보를 보관하는 것
↓ 엔터눌렀을 때 주소이동하지않도록 keycode ==13 일때 이벤트할당
로그인 버튼 눌렀을 때 필수정보 다 입력하도록 함수사용
필수정보 다 입력하고 로그인버튼 누르면 mLogins로 이동할거다 ↓
이제 로그인 한 사용자가 있다면 할당을 해주기 위한 매핑
데이터를 받아오기 위한 @RequestParam
DB붙을거니까 throws Throwable
제일 먼저 입력한 비밀번호를 암호화해줘야함 db에는 암호화 한 채로 들어가기때문
비밀번호를 암호화해준다음에 params.put으로 다시 넣어줌
다음에 사용자정보취득
로그인할 때 아이디와 비밀번호는 한 건의 데이터를 식별하기 위한 데이터일 뿐 기준값만 가져오면 됨
아이디가 유니크키이긴해도 아이디를 기준값으로 삼으면 데이터가 너무 커짐 기준은 숫자로 하는게 더 효율이 좋음
그 기준값이 누군지 알아야하니까 회원번호와 이름이 필요함
탈퇴했는데 로그인되면 안되니까 DEL_DT가 NULL인게 조건 탈퇴일자가 찍혀있으면 탈퇴한 사람
↓
이렇게해서 값이 넘어온다면 해당 아이디와 비밀번호가 맞다는 거니까 로그인이 되어야 함
값이 없다면 로그인이 안되어야하니까 mLogins로 토스
그리고 로그인이 될 때에는 세션에 넣어줘야함
세션취득방법2를 주로 씀
그리고 세션에 key value 형태로 값을 추가해줄 수 있음
↓ tb리스트에서 그냥 로그인 됐는지 확인하려고 el태그 넣어놈 ↓
로그아웃 : 세션에서 사용자 정보를 제거
↓ 세션의 정보를 초기화하고 다시 컨트롤러의 로그인페이지로 돌아가겠다 ↓