Laravel API Auth类使用

时间:2014-05-14 08:45:08

标签: php laravel laravel-4

尝试基于laravel构建和API,旨在增加许多客户的密集使用。我的问题是在我的代码中使用Auth类是否存在严重缺陷? 我已经实施了OAuth2授权,并获取有关发出请求的用户的信息,我有一个过滤器:

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个请求。此外,如果存在任何其他获取用户信息的方法,请提及它们。感谢

1 个答案:

答案 0 :(得分:1)

你谈到了严重的缺点'使用Auth类代码 - 但你真的没有解释与什么相比的缺点?只需亲自手动查看数据库中的用户?

所有Auth::onceUsingId()正在做的是将您的用户登录到没有会话或cookie的应用程序中。这非常适合API - 因为您通常不会在请求之间保持持久性。

然后,您可以Auth::user()获取有关用户的数据,例如Auth::user()->name