試圖構建和基於laravel的API,旨在發展到許多客戶激烈使用。我的問題是在我的代碼中使用Auth
類是否存在嚴重的缺陷? 我已經實現了的OAuth2授權,並獲得有關正在請求的用戶信息,我有一個過濾器:Laravel API Auth類的使用情況
Route::filter('hasAccess', function($request)
{
//get the cleaned token string
$auth_code = Request::header('Authorization');
$auth_code = trim(preg_replace('/Bearer/sui', "", $auth_code));
//get the stored session and put the query in cache for 10 minutes
$ts = DB::table('sessions as s')
->leftJoin('oauth_session_access_tokens as osat', 's.token', '=', 'osat.id')
->select('s.*')
->where('osat.access_token', '=', $auth_code)
->remember(10, $auth_code)
->first();
//Auth user cross-app
Auth::onceUsingId($ts->user);
//Extract the requested action
$request = $request->getAction();
$request = $request['controller'];
$parts = explode('@', $request);
$required = strtolower($parts[0]).'.'.$parts[1];
$required = preg_replace('/controller/sui', "", $required);
//Get the permissions
$permissions = json_decode($ts->permissions, true);
$permissions = array_fetch($permissions,'name');
if (!in_array($required,$permissions))
{
return Response::json([
'error' => true,
'dataset' => 'You don\'t have rights to access this url'
]);
}
});
它驗證用戶訪問權限的控制作用,但最有趣的是該行與Auth::onceUsingId($ts->user);
。這些行僅授予用戶1個請求。此外,如果有其他方式獲取有關用戶的信息,請提及它們。謝謝
你在問什麼?如果您必須爲每個請求驗證用戶身份? – Laurence
不完全。我想知道是否有嚴重的性能或任何其他缺點,當服務將被許多客戶端使用..例如10K,20K ..等等。所以我想知道我可能遇到的問題。此外,我想知道,如果這是讓我的應用程序中的任何地方發出請求的用戶的好方法。 –