laravel을 기반으로 API를 빌드하고 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);
의 행 이 행은 사용자에게 단 하나의 요청 만 권한을 부여합니다. 또한 사용자에 대한 정보를 얻는 다른 방법이 있다면 언급하십시오. 감사합니다
무엇을 묻는 중입니까? 요청할 때마다 사용자를 인증해야합니까? – Laurence
아닙니다. 나는 서비스가 클라이언트의 제비에 의해 소비 될 때 심각한 perfomance 또는 다른 어떤 결점이 있는지 알고 싶다. 예를 들면 10k, 20k .. 등등. 그래서 나는 나가 가지고있을 수있는 가능한 문제점을 알고 싶다 . 또한 나는 그것이 내 애플 리케이션의 어디서나 요청을하는 사용자를 얻는 좋은 방법인지 알고 싶다. –