laravel jwt-auth令牌无效

时间:2016-06-18 13:22:43

标签: php laravel jwt

我使用tymondesigns / jwt-auth在Laravel中构建了一个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'])
        );
    }

对于回复,我得到了令牌。

但是每当我尝试使用toke时,我得到了:

[
  "Token is invalid"
]

即:

public function getUser() {
        $token = JWTAuth::getToken();
        return response()->json(JWTAuth::toUser($token));
    }

这是{{url}}/api/getUser与标题Authorization: Bearer {{token}}

的GET

我的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上检查令牌后,我的签名无效。 为什么我会收到无效签名,如何使其有效?

3 个答案:

答案 0 :(得分:1)

试试这个

public function getUser() {
  // set the token on the object

  JWTAuth::parseToken();

  // get the user from token
  $user = JWTAuth::parseToken()->authenticate();

  return response()->json(compact('user'));
}

答案 1 :(得分:0)

试试这个,

定义一个构造函数,这样你就可以通过使用$ this-> jwtauth-> toUser()来获取用户,而不是在函数中重复使用JWTAuth $ jwtauth。

private $jwtauth;

public function __construct(JWTAuth $jwtauth)
{
    $this->jwtauth = $jwtauth;
}

public function getUser()
{
    $user = $this->jwtauth->toUser();
    return response($user);
}

答案 2 :(得分:0)

您可以那样做:

    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'])
    );
}