| 자료 유형 | 모듈 |
|---|---|
| 간단한 소개 | 비밀번호 없이, 이메일만으로 로그인하는 매직링크 모듈입니다. |
| 설치 경로 | ./modules/magiclogin |
| 코어 지원 범위 | Rhymix 2 이상 |
| PHP 지원 범위 | PHP 7.4 이상 |
| 자료 구분 | 공개 자료 GPL v2 |
| 저장소 URL | https://gitlab.com/rhymix_ddgg/modules/magiclogin |
| 원본 URL | https://ddgglabs.org/board1/101036 |
매직링크 로그인
비밀번호 없이, 이메일만으로 로그인하는 매직링크 모듈입니다. 회원가입·아이디·비밀번호 암기 없이 이메일 주소만 넣으면 일회용 로그인 링크가 발송됩니다.
슬랙과 동일한 이메일 매직링크 방식의 Passwordless 로그인을 라이믹스에서.
업데이트 내역
ver 1.0.2 · 2026.06.02 최신
- 짧은 주소 지원 — 매직링크 발송 URL의 짧은 주소(Short URL) 지원
- 로그인 여부 검증 — 로그인 상태 검증 로직 추가
ver 1.0.1 · 2026.05.31
- 회원정보변경·회원탈퇴 기능 호환 — 표준 회원 기능과의 호환성 개선
- 비밀번호 변경기능 숨김 — 매직링크 사용 시 비밀번호 변경 메뉴 비표시 처리
소개
대표적인 예시로 Latpeed 라는 서비스는 휴대폰번호만으로 로그인을 하는 방식이고, 슬랙은 이메일 매직링크 방식입니다. 이러한 Passwordless 로그인방식으로 라이믹스에 로그인 할 수 있는 모듈입니다.
메일함에서 링크를 누르면 로그인이 완료되며, 가입되어있지 않은 경우 자동으로 회원가입까지 처리됩니다.

주요 기능
Passwordless 로그인
비밀번호 분실, 취약한 패스워드 걱정이 없습니다.
자동 회원가입
별도 가입절차 없이 첫 로그인에 회원가입까지 처리. (on/off 가능)
기존 로그인 페이지 대체
설정을 켜면 표준 로그인 폼 대신 매직링크 폼이 표시됩니다. 켜고 끌 수 있으며, 폼의 ‘비밀번호로 로그인’ 버튼으로 일반 로그인도 가능합니다.
메일 디자인 커스터마이즈
매직링크 발송 메일을 자유롭게 커스텀할 수 있습니다.
보안
일회용 토큰
로그인 토큰은 일회용이며, 기본 30분 만료(조정 가능)입니다.
해시 암호화 저장
토큰은 원문이 아닌 SHA-256 해시로 암호화되어 저장됩니다.
관리자 제한
관리자 계정은 이메일 로그인을 제한할 수 있습니다. (권장 기본값)
재발송 제한
같은 이메일로 단기간에 반복 요청하는 것을 차단할 수 있습니다.
⚠ 기본적으로 해당 모듈은 시스템 설정 › 알림 설정에 이메일 세팅이 되어 있어야 정상 작동합니다.
화면 미리보기
← 옆으로 밀어서 더 보기 →



딱따고기
Lv. 4
DDGG Labs.
https://ddgglabs.org
무료 개발 요청 / 라이믹스 서드파티 개발
https://open.kakao.com/o/ptDlaRzi
딱따고기 연구소 오픈채팅방에서 자유롭게 피드백 및 개발문의를 받고 있습니다.
https://ddgglabs.org
무료 개발 요청 / 라이믹스 서드파티 개발
https://open.kakao.com/o/ptDlaRzi
딱따고기 연구소 오픈채팅방에서 자유롭게 피드백 및 개발문의를 받고 있습니다.
댓글 13
와 이거 너무 신기하고 좋은데요? 도입해봐야겠어요. 그런데 회원 탈퇴 같은걸 할때는 비밀번호를 한번 입력해야하는데 비번없이 가입한 경우에는 어떻게 되는지 궁금해요~~
회원탈퇴는 생각못해봤네요! 의견주셔서 감사합니다.
해당내용도 업데이트해보겠습니다.
버전 1.0.1 업데이트를 통해 회원탈퇴, 회원정보 변경 기능이 정상작동하도록 수정했습니다!
회원탈퇴시에는 이메일 인증을 통해 탈퇴가능합니다.
와~~ 빠른 피드백 감사합니다!!
오~ 이거 좋네요. 바로 적용해 봤는데 편하네요. 기존 가입자도 메일 주소로 되는군요.
감사합니다.
기존가입자는 메일로그인 + 비밀번호 로그인 둘다 가능합니다!
먼저 엄청난 묘듈 공개해주셔서 감사합니다. 닉네임 설정도 가능한가요??
감사합니다!
매직링크 로그인 후 마이페이지에서 닉네임 변경등 가능합니다.
form.blade.php 변경전
<form action="{{ getUrl() }}" method="post" class="mlg-form"> <input type="hidden" name="module" value="magiclogin" /> <input type="hidden" name="act" value="procMagicloginSend" /> <input type="hidden" name="mid" value="{{ $mid }}" /> <div class="mlg-field">
form.blade.php 변경후
<form action="{{ getUrl() }}" method="post" class="mlg-form"> <input type="hidden" name="error_return_url" value="{{ getUrl() }}" /> <input type="hidden" name="success_return_url" value="{{ getUrl('', 'module', 'magiclogin', 'act', 'dispMagicloginSent') }}" /> <input type="hidden" name="_rx_csrf_token" value="{{ Context::get('_rx_csrf_token') }}" /> <input type="hidden" name="module" value="magiclogin" /> <input type="hidden" name="act" value="procMagicloginSend" /> <input type="hidden" name="mid" value="{{ $mid }}" /> <div class="mlg-field">
request_leave.blade.php변경전
<form action="{{ getUrl() }}" method="post" class="mlg-form">
<input type="hidden" name="module" value="magiclogin" />
<input type="hidden" name="act" value="procMagicloginRequestLeave" />
request_leave.blade.php변경후
<form action="{{ getUrl() }}" method="post" class="mlg-form">
<input type="hidden" name="error_return_url" value="{{ getUrl() }}" />
<input type="hidden" name="success_return_url" value="{{ getUrl('', 'module', 'magiclogin', 'act', 'dispMagicloginLeaveSent') }}" />
<input type="hidden" name="_rx_csrf_token" value="{{ Context::get('_rx_csrf_token') }}" />
<input type="hidden" name="module" value="magiclogin" />
<input type="hidden" name="act" value="procMagicloginRequestLeave" />
<button type="submit" class="mlg-submit" style="background:#dc2626;">
기본스킨 변경후 정상 작동하는걸로 확인하였습니다.
이메일 링크에 짧은주소(route)가 제대로 지원되면 좋겠습니다.
주소가 지저분하면 왠지 클릭하기 꺼림직해요. ㅎㅎ
링크 클릭 후 Auth 액션에서, 이미 로그인되어 있는 경우 튕기도록 하면 좋겠습니다.
다른 액션에서는 로그인 여부를 체크하는데, 여기서는 체크를 안 하더군요.
세션을 초기화하지 않고 로그인 아이디만 A회원에서 B회원으로 바뀌는 상황은 지금까지 없었기 때문에,
게시판에서 글읽기나 수정 권한을 체크하는 부분에 문제가 생길 수도 있습니다.
감사합니다!
이메일에 보내는 링크를 말씀해주신대로, 짧은 주소를 지원하여
/magiclogin/auth/{token} 형태로 제공할 수 있도록 수정하고,
Auth액션에서 로그인 여부 체크하여 이미 로그인 되어있는 경우 튕기도록 수정했습니다! (토큰 수명은 사망)
로그인안해도 주소만 입력하면 계정이 계속 생성되는건가요?
웹뷰앱은 지원 안되겠죠?
이미 해당 이메일로 가입된 유저있다면, 해당 계정으로 로그인됩니다.
처음 시도하는 이메일이라면 자동으로 계정이 생성됩니다.
웹뷰앱 지원은 준비해보겠습니다!