기타

리브레 스킨 적용시 로그인 오류

nopdata 2016. 8. 26. 22:23

리브레 위키 로그인 오류

리브레 위키 스킨을 적용하였더니 로그인 버튼에 반응이 오지 않는다.

해결방안.



원인 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