簡體   English   中英

Laravel API Auth類使用

[英]Laravel API Auth class usage

嘗試構建和基於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個請求。 此外,如果存在任何其他獲取用戶信息的方法,請提及它們。 謝謝

你談到使用Auth類代碼的“嚴重缺點” - 但你真的沒有解釋與什么相比的缺點? 只需自己手動查看數據庫中的用戶?

所有Auth::onceUsingId()正在做的是將用戶登錄到應用程序而不使用會話或cookie。 這非常適合API - 因為您通常不會在請求之間保持持久性。

然后,您可以執行Auth::user()以獲取有關用戶的數據,例如Auth::user()->name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM