외부 로그인 코드 로그인 실패 시 안내가 안뜨는 이유?
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
안녕하세요.
기존의 로그인 화면과 동시에
레이아웃에 이러한 스타일의 로그인을 추가로 넣어주었습니다.
xedition의 기본 스킨에서 코드를 가져와서 그대로 이식한거라 잘작동할 것이라 생각했지만
로그인은 잘됩니다.
근데 한 가지 문제점이 있습니다.
로그인을 실패했을 때 암호가 틀렸습니다라던지 아이디가 일치하지 않습니다라던지의 경고가 뜨지 않습니다.
혹시 빠진 부분이 있을까요?
제 사이트만 그런게 아니라 xe.conory.com의 외부로그인도 마찬가지 증상인 것같네요.
제 오래된 사이트에 설치된 외부로그인 위젯의 경우 얼럿창으로
아이디 또는 비밀번호가 일치하지 않는다고 경고창이 잘 뜨는데
무엇이 문제인지 궁금합니다.
<form action="{getUrl('', 'act', 'procMemberLogin')}" method="post" autocomplete="off">
<input type="hidden" name="act" value="procMemberLogin" />
<input type="hidden" name="success_return_url" value="{getCurrentPageUrl()}" />
<input type="hidden" name="xe_validator_id" value="layouts/레이아웃이름/layout/" />
<div class="input-container">
<input class="popup_login_style" autocomplete="off" type="<!--@if($member_config->identifier != 'email_address')-->text<!--@else-->email<!--@end-->" name="user_id" placeholder="<!--@if($member_config->identifier != 'email_address')-->ID<!--@else-->E-mail<!--@end-->" required="required" />
</div>
<div class="input-container">
<input class="popup_login_style" type="password" name="password" placeholder="Password" required="required" />
</div>
<div class="check_wrap">
<input type="checkbox" id="check_btn" name="keep_signed" id="keepid" class="inputCheck" value="Y" onclick="jQuery('#warning')[(jQuery('#keepid:checked').size()>0?'addClass':'removeClass')]('open');" />
<label for="check_btn">
<span>{$lang->keep_signed}</span>
</label>
</div>
<button type="submit">{$lang->cmd_login}</button>
<div class="links">
<a href="{getUrl(['mid' => $mid, 'act' => 'dispMemberSignUpForm'])}">{$lang->cmd_signup}</a>
<span>|</span>
<a href="{getUrl(['mid' => $mid, 'act' => 'dispMemberFindAccount'])}">{$lang->cmd_find_member_account}</a>
</div>
</form>
정말 신기하게도 게시판에 글쓰기 버튼을 눌러서 권한이 없을때 나오는 로그인 페이지는 또 그 알림 아이디 또는 비밀번호가 일치하지 않습니다. 메시지가 붉은색으로 잘뜨네요.
이런식으로요.
<div class="message error">
<p>아이디 또는 비밀번호가 일치하지 않습니다.</p>
</div>
근데 modules/member/skins/스킨명
에서 지정한 로그인 페이지에서는 또 저 권한관련 알림이 뜨질 않네요.
혹시 추가해 줘야하는 코드가 있을런지요?
감사합니다.
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/member/skins'" class="rx_member-notice {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
이래저래 잘작동하는 코드와 비교중인데
대충 위 코드가 필요한 것으로 보여지네요.
++++++++++++++++++++++++
/member/skins/은 위코드로 해결하였는데
레이아웃은 아닌것 같네요. 조금 더 찾아보겠습니다.
++++++++++++++++++++++++
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/message/skins/스킨명/system_message/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
이코드가 맞는데 Form 안에 넣어주어야하고
저 같은경우는 레이어팝업으로 로그인이 뜨게 하였는데
로그인이 실패하면서 새로고침이 되어서 레이어 팝업이 닫혀버려서
다시 로그인 버튼을 누르면 레이어팝업이 뜨면서 그 로그인 실패 사유가 적혀있네요
혹시 Ajax 등으로 새로고침을 막는방법은 없을까요?

댓글 4
이건 제이쿼리등으로 설정하였을까요?
경고 알림을 얼럿창으로 바꾸는 방법이 있을까요?
레이아웃에서도 rx_ajax가 될지 모르겠네요.
https://github.com/rhymix/rhymix/issues/2055
https://github.com/rhymix/rhymix/commit/6c309ad3b04e061660c57c84ca30573ca8bccb0b
form 태그의 class 속성에 rx_ajax를 넣으면 페이지 이동 전에 유효성 검사를 하고 실패시 alert 창을 띄워주는 것으로 알고 있어요.