使用 Slim 3 在应用 运行 之前验证 usertoken
Authenticate usertoken before app run with Slim 3
我正在使用 Slim Framework 3 制作一个小型内部 API 来获取 facebook 数据。大约有 30 个特定用户可以访问 API。
我想通过从网站发送的用户令牌对用户进行身份验证,并且在应用 运行 之前检查该令牌。
用户的令牌在数据库中设置,当用户请求 API 时,将使用 GET 发送令牌,如果数据库和 GET 令牌匹配,则用户应授予访问权限 API,否则应禁止用户访问。
我正在使用它来获取 facebook 数据:
$app->get('/fbdata/campaign/{campaign}/bankarea/{bankarea}/from/{from}/to/{to}/utoken/{utoken}', function(Request $request, Response $response) {
$bd = new BankAppData();
$getFb = new GetFacebookData();
$bankarea = $request->getAttribute('bankarea');
$campaign = $request->getAttribute('campaign');
$appid = $bd->BankData($bankarea)->appid;
$appsecret = $bd->BankData($bankarea)->appsecret;
$fbtoken = $bd->BankData($bankarea)->fbtoken;
$dateFrom = $request->getAttribute('from');
$dateTo = $request->getAttribute('to');
$getFb->FetchData($appid, $appsecret, $fbtoken, $campaign, $bankarea, "act_XXXX", $dateFrom, $dateTo);
});
这很好用,但我想在上面 运行.
之前使用 AuthenticationHandler
class 检查 utoken
我正在使用 $app->add(new SNDB\AuthenticationHandler());
添加它,但我不确定如何从我的 AuthenticationHandler class.
中的 URL 获取 utoken
基本上我想做类似
的事情
function Authenticate() {
if($dbToken != $utoken) {
//No access - app will just stop doing anything else
} else {
//You have access - just continue what you was trying to do
}
}
你应该看看middleware concept from slim3。
添加中间件基本上有两种选择:
-
$app->add(function ($request, $response, $next) {
$response->getBody()->write('BEFORE');
$response = $next($request, $response);
$response->getBody()->write('AFTER');
return $response;
});
-
class ExampleMiddleware
{
public function __invoke($request, $response, $next)
{
$response->getBody()->write('BEFORE');
$response = $next($request, $response);
$response->getBody()->write('AFTER');
return $response;
}
}
$app->add(new ExampleMiddleware);
你有 PSR-7 request 并且可以从 url 得到你的 utoken
。
我正在使用 Slim Framework 3 制作一个小型内部 API 来获取 facebook 数据。大约有 30 个特定用户可以访问 API。
我想通过从网站发送的用户令牌对用户进行身份验证,并且在应用 运行 之前检查该令牌。
用户的令牌在数据库中设置,当用户请求 API 时,将使用 GET 发送令牌,如果数据库和 GET 令牌匹配,则用户应授予访问权限 API,否则应禁止用户访问。
我正在使用它来获取 facebook 数据:
$app->get('/fbdata/campaign/{campaign}/bankarea/{bankarea}/from/{from}/to/{to}/utoken/{utoken}', function(Request $request, Response $response) {
$bd = new BankAppData();
$getFb = new GetFacebookData();
$bankarea = $request->getAttribute('bankarea');
$campaign = $request->getAttribute('campaign');
$appid = $bd->BankData($bankarea)->appid;
$appsecret = $bd->BankData($bankarea)->appsecret;
$fbtoken = $bd->BankData($bankarea)->fbtoken;
$dateFrom = $request->getAttribute('from');
$dateTo = $request->getAttribute('to');
$getFb->FetchData($appid, $appsecret, $fbtoken, $campaign, $bankarea, "act_XXXX", $dateFrom, $dateTo);
});
这很好用,但我想在上面 运行.
之前使用AuthenticationHandler
class 检查 utoken
我正在使用 $app->add(new SNDB\AuthenticationHandler());
添加它,但我不确定如何从我的 AuthenticationHandler class.
基本上我想做类似
的事情function Authenticate() {
if($dbToken != $utoken) {
//No access - app will just stop doing anything else
} else {
//You have access - just continue what you was trying to do
}
}
你应该看看middleware concept from slim3。
添加中间件基本上有两种选择:
-
$app->add(function ($request, $response, $next) { $response->getBody()->write('BEFORE'); $response = $next($request, $response); $response->getBody()->write('AFTER'); return $response; });
-
class ExampleMiddleware { public function __invoke($request, $response, $next) { $response->getBody()->write('BEFORE'); $response = $next($request, $response); $response->getBody()->write('AFTER'); return $response; } } $app->add(new ExampleMiddleware);
你有 PSR-7 request 并且可以从 url 得到你的 utoken
。