【问题标题】:How to get user from JWTAuth with token in laravel 5.5如何在 laravel 5.5 中使用令牌从 JWTAuth 获取用户
【发布时间】:2018-10-30 20:17:03
【问题描述】:

我将使用 JWTAuth 从模型创建令牌。所以我用了这个方法:

$token = JWTAuth::fromUser($user);

在我的 api 路线中,我有:

Route::post('login', 'AuthController@login');

Route::group([

    'middleware' => 'jwt.auth',
    'prefix' => 'auth'

], function ($router) {

    Route::post('logout', 'AuthController@logout');
    Route::post('refresh', 'AuthController@refresh');
    Route::get('me', 'AuthController@me');
});

现在我应该有权从 JWTAuth 获取用户。然后我使用:

$user = JWTAuth::parseToken()->authenticate();

但它返回 false。

【问题讨论】:

    标签: php laravel authentication jwt


    【解决方案1】:

    如果您需要从标头令牌获取当前用户 ID,请尝试。测试过

    use Tymon\JWTAuth\Facades\JWTAuth;
    
       protected function getCurrentUser()
        {
            return JWTAuth::parseToken()->authenticate()->id;
        }
    

    【讨论】:

      【解决方案2】:

      你应该在api.php中使用like

      Route::post('user', 'UserController@createUser');
      

      在你的控制器中

      public function getAuthUser(Request $request) {
              try {
      
                  if (!$user = JWTAuth::toUser($request->token)) {
                      return response()->json(['code' => 404, 'message' => 'user_not_found']);
                  } else {
      
                      $user = JWTAuth::toUser($request->token);
                      return response()->json(['code' => 200, 'data' => ['user' => $user]]);
                  }
              } catch (Exception $e) {
      
                  return response()->json(['code' => 404, 'message' => 'Something went wrong']);
      
              }
          }
      

      希望这会对你有所帮助。

      【讨论】:

      • $user 为 false 没有任何回报!
      • 不可能在每个请求正文中发送令牌。最好发送标题选项。
      猜你喜欢
      • 2017-11-05
      • 2020-07-12
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2018-05-30
      • 2015-09-19
      • 2016-08-08
      • 2016-07-18
      相关资源
      最近更新 更多