자동로그인~ 을 하라고 할때 가장 먼저 생각하는것이 쿠키를 활용한 이용방법일것이다.
로그인정보를 세션에 저장하든 쿠키에 저장하든 상관없다.

1. 사용자를 구분할수 있는(userId) 구분값과 랜덤값을 조합하여 암호화 시킨뒤 쿠키로 굽는다.
2. 로그인시 자동로그인 여부를 체크하게 한다.
3. 자동로그인이 체크되어 있다면 암호화된 랜덤값을 DB와 쿠키에 담는다. 쿠키 종속시간은 대략 1달정도로한다.
   서버사이드에서 랜덤값을 구한다면 1번의 과정은 생략.
4. 이후 로그인 여부 체크할때 쿠키에 저장된 값을 가져와 DB에 있는 값과 비교한다.
    암호화된 값에 userId정보를 가지고 있어야 비교가 쉬워질것이다.
5. 정상적인 로그아웃이라면 쿠키와 DB에 있는 암호값을 삭제해준다.
6. 정상적인 로그인으로 접속했는지? 또는 자동로그인으로 접속했는지를 구분하고자 한다면
   또다른 쿠키값을 생성하여 비교한다. 이 쿠키값은 브라우져와 그 생명주기를 같이한다.

이정도로 구현하면 될까?

'개발노트' 카테고리의 다른 글

java Naming rule 링크모음  (0) 2010.06.02
Cookie Class 정리  (0) 2010.06.01
EasyMock 2.3 한글매뉴얼  (0) 2010.05.27
Maven  (0) 2010.04.23
eclipse와 Java SE6로 구성된 독립현 웹서비스 구성법 따라하기[링크]  (0) 2010.04.15


MySQL에는 UUID()라는 함수가 있어서 랜덤키를 생성해 준다.
그런데 이 키가 접속한 DBMS, 시간대와 관련이 있는것 같다.

select UUID() 하면 결과는 다음과 같이 나온다.

eef15bb6-1f6d-102b-bfa8-00151712159c

그런데 계속 실행해도 앞의 8자리만 바뀔뿐 뒷자리는 변함이 없다. 비슷한 시간에 많은 키를 생성하다보면 유추가 가능할것 같다. 나의 생각일뿐인가?

그래서 생각해 낸것이... 암호화
MySQL에서 제공하는암호화 함수중 아무거나 골라서.. UUID키를 암호화 시킨다.
그럼 보기에도 다양한 키가 생성된다.

select MD5(UUID()) ;

결과 : fa865959f0c29ec05eefa34a35cc54f1

뭐 어찌되었건 간에 사용자가 유추할수 없게끔만 하면 되기때문에 이게 좀더 나아보인다.