Mediawiki认证通过检查API与Ruby或Javascript
Mediawiki authentication by checking API with Ruby or Javascript
我想看看用户是否登录到我的mediawiki应用程序。我认为解决这个问题的一个好方法是对mediawiki应用程序做一个api请求,并检查用户是否登录。唯一的问题是我完全没有JSON或API的经验:s: d
我四处看了一下,发现了这个好看的宝石:https://github.com/jnunemaker/httparty
用这个gem我可以检查我的api。例如:
response = HTTParty.get('https://en.wikipedia.org/w/api.php')
这样我得到了一堆有用的数据。然而,问题是该请求是代表服务器而不是用户完成的。我将无法看到用户是否登录,但我可以看到我的服务器是否登录。我不喜欢……
关于如何代表用户做这个api请求的任何解决方案?也许在其中一个视图中?
如果我能像mediawiki那样做就好了:https://www.mediawiki.org/wiki/Special:ApiSandbox#action=query&meta=userinfo&format=json
也许你可以写一些javascript来解决这个问题…
您可以为MediaWiki安装编写一个非常简单的API扩展,它允许您查询API以检查某个用户是否登录。使用User::isLoggedin
进行实际检查。
您可以在https://www.mediawiki.org/wiki/API:Extensions上使用骨架,然后将function 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:
api.php?action=checkIfUserIsLoggedIn&user=AdaLovelace&format=json
您可以使用cookie。如果你看饼干集,你有wikiNameUserID
, wikiNameUserName
和wikiName_session
。如果他们已经注销,那么wikiNameLoggedOut
将被设置,wikiNameUserID
将被删除。这将工作,只要你的应用程序是在同一域名。
- 为什么不't我的ruby代码与javascript文件一起插入
- Ruby on Rails javascript getting truncated
- 带有ruby代码和javascript的链接
- Rails:试图在javascript(Google Charts API)中嵌入一个adv-ruby(each+迭代器
- ruby到javascript,可能吗?怎样
- Javascript是否可以在VPS/远程服务器上执行Ruby脚本
- 从Haml调用外部javascript中的ruby数组
- 使用情感API视频(Javascript或Ruby)
- 让Javascript下拉菜单在rails上使用ruby
- Javascript Ruby's类似地图的方法
- 页面对象设计:有没有相当于Ruby gem的Javascript;site_prism”;
- 相当于Ruby中的pull和uniq的Javascript
- 将javascript变量分配给ruby变量
- 用JavaScript编写嵌入式ruby
- 如何使用 Ruby 在 Javascript (js.erb) 中设置 url
- parsing .net DateTime in Ruby & JavaScript
- 用Ruby/Javascript解码带引号的可打印字符串
- 寻找准确的Ruby, Javascript,或R Excel RATE()或IRR()函数实现
- Ruby Javascript and Assets
- 在Ruby/Javascript中设置按钮的href