드로우홀릭 더베이직

돌직구님께서 저술한 2013무따기로 하나 하나 열심히 익혀가고 있는 독자입니다.

책 앞 부분에 로그인 기능을 구현하는 내용이 있습니다. 책 제목처럼 무작정 책 따라서 열심히 만들다보니, 로그인 기능은 구현이 되었는데....

어찌된 일인지, "사용자1"로 로그인이 되어 있는 상태에서 다른 PC에서 "사용자1" 아이디로 로그인을 하면 아무렇지도 않게 그대로 로그인이 돼버립니다.

이게 정상은 아닌 거죠??

책을 여러번 정독해봤는데, 제가 잘못 따라한 것은 없는 것 같습니다.

이 허술한 로그인 시스템을 방지할 방법이 필요합니다. 

제가 무엇을 간과하고 있는지,해답을 좀 알려주시면 고맙겠습니다.


profile

돌직구

2019.06.05 16:11:14
*.165.242.137

'사용자1'로 로그인이 되어 있는 상태에서, 다른 PC에서 '사용자1' 아이디로 로그인을 하면 로그인이 된다.

--> 이것이 문제라고 하셨는데요..


대부분의 업무 시스템에서 이러한 로그인 체계를 '문제'라고 하지 않습니다.

즉, 정상이라는 것이죠.


그것을 방지하려면, 꽤 복잡한 작업을 처리해야 합니다.


논리적으로 생각해 보자면..


접속상태를 관리하는 테이블이 있어야 합니다.

예를 들면 다음과 같습니다.


LoginID   StartTime   EndTime
--------------------------------------
user1     09:00       09:10
user2     09:00       
user1     09:15

위와 같은 구조를 보면, user1은 9시에 로그인해서 9시 10분에 로그아웃을 하였습니다.

user2는 9시에 로그인해서 계속 사용중인 상태입니다.

user1은 다시 9시 15분에 로그인해서 계속 사용중인 상태입니다.


여기에서 우리는 다음을 알 수 있습니다.

  1. 사용자가 로그인하고, 로그아웃할 때, 이 테이블에 값을 기록해 두어야 한다.
  2. EndTime에 값이 비어 있으면, 현재 사용중인 데이터이다.

이런 원칙이 섰다면, user1이 로그인할 때, 'EndTime'이 비어있는 데이터가 존재하면 로그인을 막으면 됩니다.


그러나, 로그인/로그아웃 할 때.. 이런 처리를 매 번 해 줘야 한다는 것이 꽤 번거로운 작업이죠.

무엇보다 문제는.. 어떤 문제로 인해 로그아웃하지 않고 강제 종료되었을 때..

그 사용자는 다시 로그인하지 못 하게 됩니다.


이런 이유로 대부분의 시스템에서는, 중복 로그인을 막지 않습니다.


다시 한 번 중복 로그인이 필요한 지 생각해 보시고, 필요하다면, 위 내용을 구현하시면 됩니다.

 

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 FAQ: 어떤 과정을 수강하는 것이 좋을까요? 외 돌직구 2017-08-29 31048
공지 좋은 답변을 이끌어 내는 방법 [1] 돌직구 2017-07-14 27369
공지 액세스 Q/A 게시판 형식을 변경합니다. 돌직구 2014-09-10 22911


  주소  12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2021-경기하남-1166 호  [사업자 정보 확인]
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.