在laravel中使用jwt
jwt它的两大使用场景是:认证和数据交换
安装及基础配置
使用 composer 安装
composer require tymon/jwt-auth
在安装完成后,会生成这样一个目录
进行一些配置–只对laravel5.4以下的版本
这里值得注意的是,有些文档会说要添加TymonJWTAuthProvidersLaravelServiceProvider::class ,这只在 Laravel 5.4
及以下版本是必要的,更新的 Laravel 版本无需添加。
发布配置文件
//这条命令会在 config 下增加一个 jwt.php 的配置文件
php artisan vendor:publish --
provider="TymonJWTAuthProvidersLaravelServiceProvider"
生成配置成功后,会在config目录中生成这样一个配置文件
生成加密密钥
还有需要生成加密字段,会在.env中生成新的数据
php artisan jwt:secret
例如,生成了
JWT_SECRET=w5NpwYgUTGBt1lVufOhy40SDnRICjqOtTRWHSrdf2aOplnxRulMh26qjVzPNGA9P
更新模型
由于大多数jwt都是用来验证用户的,所以,这里我用user模型来测试
首先,需要要实现JWTSubject
例如:
class User extends Authenticatable implements JWTSubject
第二,既然是需要实现,那么就要在类中去实现它
/**
* Get the identifier that will be stored in the subject claim of the JWT.
*
* @return mixed
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* Return a key value array, containing any custom claims to be added to the JWT.
*
* @return array
*/
public function getJWTCustomClaims()
{
return [];
}
修改 auth.php
在config/auth.php中修改
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api'=>[
'driver' => 'jwt', // 原来是 token 改成jwt
'provider' => 'users',
]
],
然后,我需要jwt可以使用Dingo,就要在configapi中去配置
找到’auth’=>[]这个配置
'auth' => [
'jwt' => 'DingoApiAuthProviderJWT',
],
tymon/jwt-auth 是使用第三方来集成 JWT 身份验证的软件包。
一旦您安装了这个软件包,您就可以在 config/api.php 文件或者引导文件中配置该服务提供者
如果使用jwt的话,在登录成功后,会生成一段token,那怎么使用这段token呢
需要把它带到header头里面
看图,需要一个Authorization参数,其参数值是token类型再空一个格,后面就是token了
比如
Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGkudGVzdFwvYXBpXC9sb2dpbiIsImlhdCI6MTYzMDkzNTQ0MywiZXhwIjoxNjMwOTM5MDQzLCJuYmYiOjE2MzA5MzU0NDMsImp0aSI6IjVESktaUExlMXpJM3pjQVQiLCJzdWIiOjEsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.EV5-n61uq8bcGFIciQzW5pHGEIwLHujHM7YNMdKIb3E
从token获取信息
都可以获取已登录用户信息,当然,前提是传递了token
//第一种写法
$user = app(Auth::class)->user();
return $user;
//第二种写法
$user = auth('api')->user();
return $user;
//第三种写法
$user = $this->auth->user();
return $user;
版权声明:
作者:linrux
链接:https://www.tot7.cn/technology/php/175.html
来源:Code林
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论