【发布时间】:2016-03-18 17:16:14
【问题描述】:
我正在为移动应用构建一个 api,并且我正在使用 JWT 对用户进行身份验证。我正在尝试在 Laravel 5.1 中实现它。
每当我使用通过身份验证方法提供给我的令牌时,我都会不断收到错误消息:{"error":"user_not_found"}。
我的过程:
- 使用
Auth::attempt($credentials)对用户进行身份验证 - 使用
$user = User::where('user_id', Auth::user()->user_id)->first();从数据库中获取用户 -
使用
为用户设置 Token$token = ""; try { // attempt to verify the credentials and create a token for the user if (! $token = JWTAuth::fromUser($user)) { return response()->json(['error' => 'invalid_credentials'], 401); } } catch (JWTException $e) { // something went wrong whilst attempting to encode the token return response()->json(['error' => 'could_not_create_token'], 500); }
它正在使用这个方法返回一个令牌:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOm51bGwsImlzcyI6Imh0dHA6XC9cL3BlZGxyLmRldlwvYXBpXC9sb2dpbiIsImlhdCI6MTQ0OTk2NDQ2NywiZXhwIjoxNDQ5OTY4MDY3LCJuYmYiOjE0NDk5NjQ0NjcsImp0aSI6IjJlMDMyMjA5MjMyZWM1MDVlY2I3YzE4ODFjNDk1MzFmIn0.tbO_fv4WDQ6WgiHtyYJAq2rjnOtaYPq85VO2ja2YVzw
但是当尝试使用令牌对用户进行身份验证时,它会抛出错误{"error":"user_not_found"}。
我的路线.php:
Route::any('/login', ['as' => 'login', 'uses' => 'APIController@postLogin']);
Route::group(['middleware' => 'jwt.auth'], function() {
Route::any('/users', ['as' => 'users', 'uses' => 'UsersController@getUsers']);
});
如果我取出中间件组,我可以访问/users 路由。
我认为它发生在 Tymon\JWTAuth\Middleware 命名空间中的 GetUserFromToken 类中的某个地方,因为这是唯一列出错误 user_not_found 的地方。
我的数据库使用user_id,而不仅仅是id 作为主键,这可能是问题吗?
【问题讨论】:
-
你的问题已经回答了
-
@PeteHouston 检查我 2 小时前的回答。我设法解决了。
标签: php laravel authentication laravel-5.1 jwt