리브레 위키 로그인 오류
리브레 위키 스킨을 적용하였더니 로그인 버튼에 반응이 오지 않는다.
해결방안.
원인 1.
미디어 위키의 버전업을 하면서 더이상 쓰이지 않는 토큰 메시지를 리브레에서 지속적으로 사용
https://www.mediawiki.org/wiki/API:Login
현재 버전은 1.27 버전
원인 2.
토큰 매칭시 비교되는 값 뒷부분의 추가 값 오류
/include/api/ApiLogin.php
주 쟁점인 WrongToken을 반환하는 부분이다. 여기서 $token->match($params['token'])의 값이 일치하지 않는 문제로 인하여 Wrong토큰이 지속적으로 발생한다.
해서 두 토큰을 각기 출력해 보기로 하였다.
$params['token']은 그냥 출력하면 될 것이고, $token은 toString() 메소드를 이용하면 된다.
각각 하나씩 출력한 결과와 두 토큰값을 동시에 출력한 사진이다
자세히 보면 마지막에 '\'가 붙게 되는데 $token->toString()의 경우 토큰값 사이에 '+'가 붙고 $params['toekn']에는 ' '(공백)이 붙는다. 이로 인해 두 문자열을 비교하게 되면 '+'가 붙은 $token의 값이 더 큰 값으로 비교가 되어 math() 메소드가 제대로 성립이 되지 않은 것이다.
해서 직접 $params['token']의 뒷부분을 조작하면 두 값이 일치함을 확인할 수 있다 (strcmp에서 0은 같다를 의미)
따라서 조건문의 $params['token']을 고치면 WrongToken의 무조건 발생을 막을 수 있다.
--> 코어를 고친다는 것이 맘에 안든다는 형들의 의견을 받아 스킨을 고치면 아래와 같다.
/skins/liberty/js/login_request.js
위에서 한 것과 같이 슬라이싱을 해서 '+'가 넘어가며 ' '으로 변하므로 강제로 url인코딩한값을준다.
++++
1.27버전 이후 EmptyPass와 같은 메시지가 없어졌다면.. 어떻게 분기를 하여야 하는가?
이 부분을 다들 자세히 보았는지는 잘 모르겠는데 보면 result['reason']이라는 부분이 있다.
Failed 토큰메시지를 주며 그 이유도 같이 넘긴다는 의미이다. 따라서 이 부분을 출력해 보기로 하였다.
값이 없거나 틀릴 경우 나오는 메시지이다.
이 메시지를 직접 고치거나 스킨쪽에서 고치면 된다.
'기타' 카테고리의 다른 글
Bluestack - Window 10 오류 (SYSTEM_SERVICE_EXCEPTION) (3) | 2016.11.07 |
---|---|
파이썬 레지스트리 설정 (0) | 2016.11.06 |
CGC on Ubuntu (0) | 2016.08.24 |
CGC? (0) | 2016.07.28 |
Mail Encoding & UTF-8 <-> Unicode 변환 (0) | 2016.07.21 |