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