Php 未定义变量
我在slim framework v2中编写了一个用于身份验证的中间件 以下是教程: 认证:Php 未定义变量,php,slim,Php,Slim,我在slim framework v2中编写了一个用于身份验证的中间件 以下是教程: 认证: function authenticate(\Slim\Route $route) { $headers = getallheaders(); $response = array(); $app = \Slim\Slim::getInstance(); if (isset($headers['Authorization'])) { if(strpos($
function authenticate(\Slim\Route $route) {
$headers = getallheaders();
$response = array();
$app = \Slim\Slim::getInstance();
if (isset($headers['Authorization'])) {
if(strpos($headers['Authorization'], '.') !== false) {
$authorization = explode('.', $headers['Authorization']);
$api_key = $authorization[0];
$user_id = $authorization[1];
$objUsers = new Users();
if ($objUsers->isValidUser($user_id, $api_key) <= 0) {
$response["error"] = true;
$response["message"] = "Access Denied. Invalid Api key";
echoResponse(401, $response);
$app->stop();
}
} else {
$response["error"] = true;
$response["message"] = "Access Denied. Invalid Api key";
echoResponse(401, $response);
$app->stop();
}
} else {
$response["error"] = true;
$response["message"] = "Api key is misssing";
echoResponse(400, $response);
$app->stop();
}
}
$authenticate2 = function (\Slim\Route $route, $role, $where) {
$response["group_id"] = $route->getParam('group_id');
$response["role"] = $role;
$response["where"] = $where;
echoResponse(200, $response);
};
函数身份验证(\Slim\Route$Route){
$headers=getallheaders();
$response=array();
$app=\Slim\Slim::getInstance();
如果(isset($headers['Authorization'])){
if(strpos($headers['Authorization'],'.')!==false){
$authorization=explode('.',$headers['authorization']);
$api_key=$authorization[0];
$user_id=$authorization[1];
$objUsers=新用户();
如果($objUsers->isValidUser($user_id,$api_key)stop();
}
}否则{
$response[“error”]=true;
$response[“message”]=“访问被拒绝。Api密钥无效”;
回声反应(401,$response);
$app->stop();
}
}否则{
$response[“error”]=true;
$response[“message”]=“Api密钥出错”;
回声响应(400美元响应);
$app->stop();
}
}
$authenticate2=函数(\Slim\Route$Route、$role、$where){
$response[“group_id”]=$route->getParam('group_id');
$response[“role”]=$role;
$response[“where”]=$where;
回声响应(200美元响应);
};
第一种身份验证方法运行良好。但第二种身份验证方法返回两个错误:
未定义变量:authenticate2
函数名必须是字符串
错误行:$app->get('/cases/shared/group/:group\u id',authenticate',$authenticate2($app->router()->getCurrentRoute(),'member','group'),函数($group\u id)use($app){
如何将路由和参数一起发送到中间件?确保
$authenticate2=function();
代码在$app->get('/cases/shared/group/:group_id'),…
调用之前执行
function authenticate(\Slim\Route $route) {
$headers = getallheaders();
$response = array();
$app = \Slim\Slim::getInstance();
if (isset($headers['Authorization'])) {
if(strpos($headers['Authorization'], '.') !== false) {
$authorization = explode('.', $headers['Authorization']);
$api_key = $authorization[0];
$user_id = $authorization[1];
$objUsers = new Users();
if ($objUsers->isValidUser($user_id, $api_key) <= 0) {
$response["error"] = true;
$response["message"] = "Access Denied. Invalid Api key";
echoResponse(401, $response);
$app->stop();
}
} else {
$response["error"] = true;
$response["message"] = "Access Denied. Invalid Api key";
echoResponse(401, $response);
$app->stop();
}
} else {
$response["error"] = true;
$response["message"] = "Api key is misssing";
echoResponse(400, $response);
$app->stop();
}
}
$authenticate2 = function (\Slim\Route $route, $role, $where) {
$response["group_id"] = $route->getParam('group_id');
$response["role"] = $role;
$response["where"] = $where;
echoResponse(200, $response);
};