【发布时间】:2016-10-20 05:29:58
【问题描述】:
我在 Laravel 中使用 tymondesigns/jwt-auth 构建了一个 api 来验证用户。
我按照github 上的教程进行操作,登录正常:
public function login() {
if (!$token = JWTAuth::attempt(Input::only('email', 'password'))) {
return response()->json(['error' => true], HttpResponse::HTTP_UNAUTHORIZED);
}
$user = User::where('email', Input::get('email'))->first();
return response()->json(array(
'user' => $user,
'token' => compact('token')['token'])
);
}
对于响应,我得到了令牌。
但每次我尝试使用我得到的令牌时:
[
"Token is invalid"
]
即:
public function getUser() {
$token = JWTAuth::getToken();
return response()->json(JWTAuth::toUser($token));
}
这是一个到 {{url}}/api/getUser 的 GET,标题为 Authorization: Bearer {{token}}
我的 routes.php 包含以下内容:
Route::group(array('prefix' => 'api'), function() {
Route::post('/login', 'API\UserController@login');
Route::get('/getUser', ['before' => 'jwt-auth', 'uses' => 'API\UserController@getUser']);
});
我怎样才能使它与令牌一起工作?我在这里遗漏了什么吗?
更新:
我得到了这样的令牌:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL3NtYXJ0YXBwXC9hcGlcL2xvZ2luIiwiaWF0IjoxNDY2Mjc5ODUxLCJleHAiOjE0NjYyODM0NTEsIm5iZiI6MTQ2NjI3OTg1MSwianRpIjoiYjNkZjViZGNiMjQ2YWU0NzVlZDYwODQxMWFlZDNkMTAifQ.pqU0pWKVzmOel51ObyE9vKLk07tefh2lDE-fp-AOavE
在我检查https://jwt.io 上的令牌后,我得到了无效的签名。 为什么我得到无效签名,我怎样才能使它有效?
【问题讨论】:
-
routes.php文件的内容是什么? -
我将路线添加到我的问题中,请参阅编辑
-
你到底是如何传递令牌的?你在用邮递员吗?令牌应该不带大括号
{{ }}传递。 -
是的,我正在使用 Postman。我的头部授权示例:Bearer eyJ0eXAiOiJKV1QiLCJ......
-
在 Postman 中,您应该转到 Headers 选项卡,然后将
Authorization代替key和Bearer eyJ0eXAiOiJKV1QiLCJ...invalue的位置。我希望你这样做。