Bear wrote:
hi, I am working on developing some auth extensions these days. Now I have already done halt of my project. I extended a new class from AuthPlugin and write my code in it, it works fine. But I want to do more on this. For example, I wanna make Mediawiki login automaticlly when I logged in other applications. When I logged in an other application, the application would call a file in Mediawiki, for example, I installed my forum in forum.xxxxx.org and mediawiki in wiki.xxxxx.org, when I logged in forum, the forum would access http://wiki.xxxxx.org/myapi.php automatically and POST user ID to it. Now I must make myapi.php to set a session to make mediawiki show the user has been logged in. I have read the Mediawiki API but it cannot satisfy me, because it need some more information which I cannot supply such like users password. So is there anyway to make a user logged in without a clear-text password? thx!!
No need to do that: http://www.mediawiki.org/wiki/Manual:Hooks/UserLoadFromSession
BTW: I found another problem on a class which extended from AuthPlugin. When I 'echo' something in function authenticate($username, $password) it wont shown on page. Only when I added exit(); to stop program running, my message can be shown. For example, If I use this code: function authenticate($username, $password){ echo 'aaaaaaaaaaaaaaaaaaaaaaa'; //Do something to auth return true; } Nothing would shown, it would redirected to LoginComplete page directly. And also, if I use a hook: $wgHooks['UserLoginComplete'][] = 'WMHook_UserLoginComplete'; and 'echo' something in function WMHook_UserLoginComplete(): function WMHook_UserLoginComplete(&$user, &$inject_html){ $uid = $user->getId(); echo $uid; return true; } Nothing would be shown. If I modified the $inject_html like: function WMHook_UserLoginComplete(&$user, &$inject_html){ $inject_html = 'aaaaaaaaaaaaaaaaaa'; return true; } Whatever value I passed to $inject_html execpt empty string would cause Mediawiki stop working. Nothing would shown and the program was stop. Could you tell me why this happed? thx
Because you are being redirected. Set $wgDebugRedirects = true; in LocalSettings to see them.