我正在使用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)]);
}
答案 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;