阅读本文之前,先参考下文,配置laravel登录认证
http://laravelacademy.org/post/8900.html
安装auth-jwt
composer require tymon/jwt-auth:dev-develop --prefer-source
配置 config/app.php
providers数组中添加
Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
aliases数组中添加
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
发布配置文件
执行命令
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
生成秘钥
执行命令
php artisan jwt:secret
配置 config/auth.php
修改auth guard
'guards' => [
'web' => [
'driver' => 'jwt',
'provider' => 'users',
],
...
],
更改 App\users
修改User类,实现JWTSubject接口
class User extends Authenticatable implements JWTSubject{
//...
public function getJWTIdentifier()
{
// TODO: Implement getJWTIdentifier() method.
return $this->getKey();
}
public function getJWTCustomClaims()
{
// TODO: Implement getJWTCustomClaims() method.
return [];
}
}
随便写一个Controller
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Tymon\JWTAuth\Exceptions\JWTException;
use JWTAuth;
class AuthenticateController extends Controller
{
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
try{
$token = JWTAuth::attempt($credentials);
if (!$token){
return response()->json(['error'=>'invalid_credentials'],401);
}
} catch(JWTException $e){
return response()->json(['error'=>'invalid_credentials'],500);
}
return response()->json(compact('token'));
}
}
添加一条路由信息
Route::get('/auth', 'User\AuthenticateController@authenticate');
生成token
实现以上步骤即可laravel5.6
中集成auth-jwt