2016-12-07 86 views
0

我已经为API创建了我自己的中间件。以下是我为获得基于该请求有效的用户信息码PARAMS access_token如何从中间件获取变量?

namespace App\Http\Middleware; 

use Closure; 
use App\Exceptions\GeneralException; 
use App\Models\Access\User\User; 

class authNS 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     try { 

      $user = User::where("access_token",$request->header('access-token'))->with('details')->first(); 

     } catch (Exception $e) { 

      return response()->json(['error'=>'Something is wrong']); 

     } 

     return $next($request); 

    } 
} 

但如何将我的Controller内访问此$user变量?

回答

1

您可以使用onceUsingId()将用户登录到单个请求的应用程序中。没有会议或cookies将被利用,这意味着建立一个无状态的API时,这种方法可能会有所帮助:

因此,在您middleware你可以使用它作为:

$user = User::where("access_token",$request->header('access-token'))->first(); 

if($user) { 
    auth()->onceUsingId($user->id); 
} 

然后在你的控制器,你可以使用它为:

auth()->user() 

Docs

+0

太谢谢你了。它工作完美 – devmyb

+0

@iCode,我需要你的帮助。看看这里:http://stackoverflow.com/questions/41030097/how-to-add-some-textfield-in-form-register-laravel-generator-infyom –