질문/조언질답게시판

로그인 로그 기록

Extra Form
PHP PHP 7.3
CMS Rhymix 2.x

회원 목록 > 최근 로그인 날짜에는 26일로 기록되어 있는데

로그인 로그 기록 모듈에는 없는 경우, 자동 로그인으로 로그인한걸까요?

 

로그인 로그 기록은 아이디, 비번 입력 후 접속하는 경우를 체크하는건지,

그래서 자동 로그인으로 접속하는 경우 기록이 안되는지 궁금합니다.

반대로 최근 로그인은 마지막 접속 시간으로 보면 되는지 궁금합니다.

  • profile

    일반 패스워드를 입력하여 로그인할 경우 로그인 기록모듈에서는 로그인실행전인 before, 로그인을 실행한 후인 after 과정에서 실행합니다. 

    그 부분은 트리거라는 부분인데요, 실제로 로그인할때 트리거를 호출하여 로그인기록 모듈의 트리거로 할당한 함수들이 실행되는 형태예요. (트리거는 XE의 트리거 관련 문서 혹은 자료를 찾아보시길 바랍니다.)

    만약 로그인할경우 before 트리거를 실행해서 비밀번호가 틀린지 아닌지를 검사하고 통과할거예요.

    그런다음 https://github.com/rhymix/rhymix/blob/c9a46e16931889c731fb575b6ea272b89f47a6da/modules/member/member.controller.php#L2435 해당 줄까지 로그인에 대한 여러가지 채크를 코어내에서 한뒤

    마지막에 실제로 로그인이 완료가 되었을때 https://github.com/rhymix/rhymix/blob/c9a46e16931889c731fb575b6ea272b89f47a6da/modules/member/member.controller.php#L2478 을 실행하면서 로그인이 완료되어야 하는데 그 사이 어떤구간에서 로그인을 공유하는 다른 서드파티 혹은 애드온에서 에러가 나타난다면 실제로 쿼리하는 로그인기록에서도 문제가 발생되어 데이터를 저장하지 못했지만, https://github.com/rhymix/rhymix/blob/c9a46e16931889c731fb575b6ea272b89f47a6da/modules/member/member.controller.php#L2497 이 항목이 직접 실행되어서 로그인이 잘되는 경우가 있을 수 있습니다.

     

    다만 이는 비밀번호 입력하여 수동로그인하는 경우에서 한해서이고..

     

    자동로그인의 경우 해당 로그인을 할경우 이러한 로그인을 직접실행하지 않기때문에 해당 함수가 실행되지 않습니다.

     

    그래서 해당 함수를 따로 실행하지 않기에 로그인을 "유지"시키는 방식이기에 로그인을 따로 할 필요가 없어지지요.

     

    말그대로 로그인기록 모듈은 "로그인"을 "기록"하는 모듈이니까요

     

    자동로그인의 경우 해당 세션에 로그인관련 채크를 해봤더니 세션의 member_srl 이 있으나 캐시가 안이루어져있거나 등등 여러가지 상태를 조합하여 

     

    https://github.com/rhymix/rhymix/blob/a6ace52c9e25047f966eb83253526215936029b1/common/framework/session.php#L436

     

    를 실행하고, 

     

    https://github.com/rhymix/rhymix/blob/c9a46e16931889c731fb575b6ea272b89f47a6da/modules/member/member.controller.php#L2286

     

    마지막에 마지막으로 자동로그인이 실행된 시점을 저장합니다. (이 시점은 트리거로 잡혀있지 않고, 로그인기록은 비밀번호를 입력하여 로그인하는 기준으로 채크합니다.)

     

    해당 부분은 세션이나 이런 부분에서 유지해주는 기능으로 판단하시면 되기에 로그인기록 모듈과는 관계없이 실행된다고 생각하시면 됩니다. (코어차원일뿐)

  • profile profile
    자세히 설명해주셔서 이해가 잘 되었습니다. 오늘도 배워갑니다. 감사합니다!
  • profile

    참고로 자동로그인시에도 코어의 최근 로그인 날짜가 업데이트되도록 해놓은 이유는 휴면계정 정리 모듈 때문입니다. 자동로그인을 사용해서 몇 달 동안 로그인 상태를 유지하면 휴면계정으로 취급되는 바람에;;;

    XE는 자동로그인이 수시로 풀려서 다시 로그인해야 했기 때문에 오히려 괜찮았지만, 라이믹스는 자동로그인이 잘 안 풀려서 이런 문제가 생기더라구요. 로그인 기록 모듈은 XE 시절에 설계되었으니 아마 이런 사소한 변경내역에는 대응하지 않고 있을 것입니다.