未找到Laravel 5.1 App \ Http \ Controllers \ JWT类

时间:2015-12-08 09:29:48

标签: laravel laravel-5.1 jwt json-web-token

我正在使用JWT在我的angular-laravel应用程序中进行身份验证。一切正常,除非需要生成令牌,我得到一个错误

App\Http\Controllers\JWT

我尝试在AuthController中添加以下行: -

use Tymon\JWTAuth\Providers\JWTAuthServiceProvider;

use App\Http\Controllers\JWT;

use JWT;

但似乎没有任何效果

我的composer.json: -

"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.1.*",
    "tymon/jwt-auth": "0.5.*"
},

AuthController -

$payload = [
        'sub' => $user->id,
        'iat' => time(),
        'exp' => time() + (2 * 7 * 24 * 60 * 60)
    ];
    return JWT::encode($payload, Config::get('app.token_secret'));

public function signup(Request $request){
    $user = new User;
    $user->name = $request->input('displayName');
    $user->email = $request->input('email');
    /*$user->password = Hash::make($request->input('password'));*/
    $user->password = $request->input('password');
    $user->save();
    return response()->json(['token' => $this->createToken($user)]);
}

2 个答案:

答案 0 :(得分:3)

尝试,

JWTAuth;

但是,JWTAuth::encode不存在,如果您必须使用encode方法,请尝试此操作,

use Tymon\JWTAuth\JWTManager as JWT;

然后您可以访问encode方法

$customClaims = [
    'sub' => $user->id,
    'iat' => time(),
    'exp' => time() + (2 * 7 * 24 * 60 * 60)
];

$payload = app('tymon.jwt.payload.factory')->make($customClaims);

return JWT::encode($payload, Config::get('app.token_secret'));

答案 1 :(得分:0)

这应该只是一个命名空间问题。我想你想要JWTAuth门面。

use JWTAuth;  // if added to aliases as the install mentions
use Tymon\JWTAuth\Facades\JWTAuth; // if not aliased

更新:如果您没有更改类中的代码,这意味着您仍然可以调用JWT,则可以改为对这些导入进行别名,而不必更改对JWT的调用。

use JWTAuth as JWT;
use Tymon\JWTAuth\Facades\JWTAuth as JWT;