通过使用Ruby或Javascript检查API进行Mediawiki身份验证

通过使用Ruby或Javascript检查API进行Mediawiki身份验证,javascript,php,ruby-on-rails,mediawiki,mediawiki-api,Javascript,Php,Ruby On Rails,Mediawiki,Mediawiki Api,我想查看是否有用户登录到我的mediawiki应用程序。我认为解决这个问题的一个好方法是向mediawiki应用程序发出API请求,并检查用户是否登录。唯一的问题是,我对JSON或API:s:D完全没有经验 我环顾四周,发现了这颗漂亮的宝石: 有了这个gem,我可以检查我的api。例如: response = HTTParty.get('https://en.wikipedia.org/w/api.php') 通过这个,我得到了一堆有用的数据。然而,问题是,此请求是代表服务器而不是用户执行的。

我想查看是否有用户登录到我的mediawiki应用程序。我认为解决这个问题的一个好方法是向mediawiki应用程序发出API请求,并检查用户是否登录。唯一的问题是,我对JSON或API:s:D完全没有经验

我环顾四周,发现了这颗漂亮的宝石:

有了这个gem,我可以检查我的api。例如:

response = HTTParty.get('https://en.wikipedia.org/w/api.php')
通过这个,我得到了一堆有用的数据。然而,问题是,此请求是代表服务器而不是用户执行的。我无法查看用户是否已登录,但我可以查看我的服务器是否已登录。我不喜欢的

有没有关于如何代表用户执行此api请求的解决方案?也许是其中一种观点

如果我能像mediawiki那样做,那就好了:


也许你可以编写一些javascript来解决这个问题……

你可以编写一个非常简单的MediaWiki安装程序,让你查询API来检查某个用户是否登录。用于执行实际检查

您可以在处使用骨架,然后将
函数execute()
替换为以下内容:

public function execute() {

    $userName = $this->getMain()->getVal('user');
    $user = User::newFromName($userName);

    $isLoggedIn = $user->isLoggedIn ();

    if ( $isLoggedIn ) {

        $returnValue = 'yes';

    } else {

        $returnValue = 'no';

    }

    $this->getResult()->addValue( null, $this->getModuleName(),
                                  array ( 'loggedin' => $returnValue ) );

    return true;

}
现在,您可以使用Ruby或Javascript(或其他)查询API:


你可以用饼干。如果查看Cookie集,您有
wikiNameUserID
wikiNameUserName
wikiName\u会话
。如果他们已注销,则将设置
wikiNameLoggedOut
,并删除
wikiNameUserID
。只要你的应用程序在同一个域上,这将起作用


有关详细信息,请参阅。

您的意思是,您正在编写一个在某个域上运行的应用程序,并且您想检查用户是否登录到在同一域上运行的MediaWiki安装?是的,差不多。无论如何,它将是一种不同类型的应用程序。我不习惯用php写东西……你看了这里的答案了吗:如果你的ruby应用程序运行在同一台机器上,那么你可以对照会话文件检查cookie,因为php/Mediawiki就是这么做的。我无法在开发模式下测试这一点。我不确定我是否会在同一台服务器上使用它。已经有足够的应用程序在那里运行了…听起来是个好主意。问题是我在Ruby应用程序中没有用户的用户名。这就是我想了解的信息。有没有办法检查哪个用户使用哪个IP地址登录?在这种情况下,我可以从我的Ruby应用程序中获取IP地址,通过mediawiki查看谁登录,获取用户名,然后让要登录的用户:)。谢谢你。IP地址不起作用。如果我使用这个方法,每个IP地址只能有一个人登录:D。
api.php?action=checkIfUserIsLoggedIn&user=AdaLovelace&format=json