openresty的完整包放在百度云盘linux目录下

一键安装openresty

./install.sh

安装好后,修改nginx.conf配置文件

cd /usr/local/openresty/nginx/conf/nginx.conf

server_name   auth_api.com

cd /usr/local/openresty/lualib/ttq

修改lua脚本配置文件

vim ini.lua,注意:redis需要设置密码,不然不能访问

还需要把purview.sql两个表导入指定数据库

导入参考数据:

INSERT INTO `ttq_appid_list` VALUES ('1', 'TTQ_iL9mT5lbtl17w5M5', 'xmcsX3fmwznd27Zq3W9h', '1466488625');

INSERT INTO `ttq_appid_white_list` VALUES ('1', 'TTQ_iL9mT5lbtl17w5M5', '127.0.0.1');

在yaf中应用的时候需要修改配置文件:

application_dev.ini

authenticator.url="http://auth.api.herry_a.com:8080"
<?php
/*
格式化输出
*/
function p($arr) {
echo "<pre>";
print_r($arr);die;
}
/**
* 获取用户IP地址
*
* @return mixed
*/
function getRemoteAddr() {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && (!isset($_SERVER['REMOTE_ADDR']) || preg_match('/^127\..*/i', trim($_SERVER['REMOTE_ADDR'])) || preg_match('/^172\.16.*/i', trim($_SERVER['REMOTE_ADDR'])) || preg_match('/^192\.168\.*/i', trim($_SERVER['REMOTE_ADDR'])) || preg_match('/^10\..*/i', trim($_SERVER['REMOTE_ADDR']))))
{
if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ','))
{
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); return $ips[0];
}
else
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} return $_SERVER['REMOTE_ADDR'];
} function object2array(&$object) {
return json_decode(json_encode($object), true);
} /**
* @param $url
* @param string $method
* @param null $postFields
* @param null $header
*
* @return mixed
* @throws Exception
*/
function curl($url, $method = 'GET', $postFields = null, $header = null, $saveCookie=FALSE, $useCookie=FALSE, $cookieFile=null) {
$ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ch, CURLOPT_FAILONERROR, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
if ( !is_null($cookieFile)) {
if ( $saveCookie ) {
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
} elseif ( $useCookie ) {
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
}
if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
}
}
switch ($method)
{
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
if (!empty($postFields))
{
if (is_array($postFields) || is_object($postFields))
{
if (is_object($postFields))
$postFields = object2array($postFields);
$postBodyString = "";
$postMultipart = false;
foreach ($postFields as $k => $v)
{
if ("@" != substr($v, 0, 1))
{ //判断是不是文件上传
$postBodyString .= "$k=" . urlencode($v) . "&";
}
else
{ //文件上传用multipart/form-data,否则用www-form-urlencoded
$postMultipart = true;
}
}
unset($k, $v);
if ($postMultipart)
{
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
}
else
{
curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString, 0, -1));
}
}
else
{
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
} }
break;
default:
if (!empty($postFields) && is_array($postFields))
$url .= (strpos($url, '?') === false ? '?' : '&') . http_build_query($postFields);
break;
}
curl_setopt($ch, CURLOPT_URL, $url); if (!empty($header) && is_array($header))
{
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
$response = curl_exec($ch);
if (curl_errno($ch))
{
throw new Exception(curl_error($ch), 0);
}
curl_close($ch); return $response;
} $url = "http://auth.api.herry_a.com:8080";
$clientIP = getRemoteAddr();
$postFields = array(
'appid' => $_GET['appid'],
'appkey'=> $_GET['appkey'],
'ip' => $clientIP //测试模拟ip 真实换成$clientIP
);
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded',
'charset' => 'utf-8'
);
$auth = curl($url,'POST', $postFields, $headers);
$authArr=json_decode($auth,true);
p($authArr); ?>

最新文章

  1. Go build constraints
  2. (转)J2EE的13种核心技术
  3. Android开发新手学习总结(六)——android开发目录结构【图文版】
  4. IntelliJ IDEA 环境配置
  5. 理解TCP为什么需要进行三次握手(白话)
  6. Working with Data &#187; Getting started with ASP.NET Core and Entity Framework Core using Visual Studio &#187; 增、查、改、删操作
  7. HttpModule和Http Handler (比较与区别)
  8. MVC框架 - 异常处理
  9. Asp.net MVC @Html.DisplayNameFor中文乱码解决办法
  10. EXP-00091 Exporting questionable statistics
  11. 由单页面web应用引发的企业应用问题
  12. css中的视距perspective和视差效果
  13. bzoj 5068: 友好的生物
  14. WIFI 802.11 a/b/g/n/ac
  15. react native中使用native-echarts
  16. MySQL null与not null和null与空值&#39;&#39;的区别
  17. linux c 检测网络状态
  18. 【Java】接口开发中关于接受和发送json的相关范例
  19. css table-border
  20. QtGui.QComboBox

热门文章

  1. C++0x,std::move和std::forward解析
  2. HTML+JS = 网站注册界面源代码
  3. Maven编译Java项目
  4. [Clr via C#读书笔记]Cp6类型和成员基础
  5. 论文笔记:Attentional Correlation Filter Network for Adaptive Visual Tracking
  6. 阿里校招内推C++岗位编程题第一题 空格最少的字符串
  7. C++标准库算法
  8. 第三章——供机器读取的数据(XML)
  9. udf.dll 源码
  10. lol人物模型提取(一)