php请授权方案,ELK中kibana3 php授权方案的设计

kibana3 本身就是纯html,基于require.js 然后 结合 angular.js 实现的一个单页面应用。

所以,修改起来相对简单。

1. 部署本地的php环境,

2. 把index.html 修改成 index.php 在开头直接嵌入相关权限判断的php代码

3. 接口权限的判断,修改权限的本质是对公网屏蔽ES存储的细节。考虑到kibana的前端代码有一个url集中配置,直接修改config.js

32 elasticsearch: “http://”+window.location.hostname+”/proxy.php?q=”,

4. 编写proxy.php

define('TIMEOUT',10);

define('CONNECTTIMEOUT',5);

function _http($url, $data,$method) {

$ch = curl_init($url);

$options = array(

CURLOPT_CONNECTTIMEOUT => CONNECTTIMEOUT,

CURLOPT_TIMEOUT => TIMEOUT,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_FRESH_CONNECT => true,

CURLOPT_CUSTOMREQUEST => $method,

);

if('POST' == $method || 'PUT' == $method) {

$options[CURLOPT_POST] = true;

$options[CURLOPT_POSTFIELDS] = $data;

}

curl_setopt_array($ch, $options);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

function post($url, $data) {

return _http($url,$data,'POST');

}

function put($url, $data) {

return _http($url,$data,'PUT');

}

function del($url) {

return _http($url,'','DELETE');

}

$url = $_GET['q'];

$method = $_SERVER['REQUEST_METHOD'];

$host = 'http://localhost:9200/';

$get_url = $host . $url ;

if("GET" == $method) {

$content = file_get_contents($get_url);

echo $content;

} else if("POST" == $method){

$data = $GLOBALS['HTTP_RAW_POST_DATA'];

$content = post($get_url,$data);

echo $content;

} else if("PUT" == $method) {

$data = file_get_contents('php://input');

$content = put($get_url,$data);

echo $content;

} else if("DELETE" == $method) {

$content = del($get_url);

echo $content;

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部