php xjwt,php-Laravel中没有数据库的JWT身份验证

我对Laravel 5.x中的身份验证有疑问.我一直在专门研究tymondesigns / jwt-auth和irazasyed / jwt-auth-guard程序包,以在Laravel应用程序中进行JSON Web令牌认证和令牌处理.

我既不使用本地数据库,也不想使用.我在.env中为我的API的网址USERNAME&设置了环境变量.密码. Guzzle PHP HTTP客户端可以根据需要在API和我的应用程序之间很好地连接和返回数据.

但是,我需要在Laravel实例中设置身份验证.这是我遇到问题的地方,并且验证需要数据库连接…

$token = JWTAuth::attempt($credentials)

这是例外:

06001

>如何在不使用数据库的情况下使用JWT?

>如何完全关闭Laravel中的数据库连接?

谢谢.

更新:

使用tymon / jwt-auth,我已经在路由,内核,中间件等内部进行了设置.

我成功创建了一个“声明”,但是我需要通过编码“有效载荷”来创建令牌.

$this->username = $request->username;

$sub = $this->username;

$iat = time();

$jti = md5($sub . $iat);

$aud = env('APP_URL');

$this->claims = [

'sub' => $sub,

'iat' => $iat,

'exp' => time() + (2 * 7 * 24 * 60 * 60),

'nbf' => $iat,

'iss' => 'khill',

'jti' => $jti,

'aud' => $aud,

];

$payload = JWTFactory::make($this->claims);

?>

如何获得自定义令牌?

解决方法:

您应该定义一个自定义的身份验证提供程序,并在config / jwt.php中进行设置.

提供者的例子

将此课程放在您喜欢的任何地方.

namespace MyNamespace;

use Tymon\JWTAuth\Providers\Auth\AuthInterface;

class MyCustomAuthenticationProvider implements AuthInterface

{

public function byCredentials(array $credentials = [])

{

return $credentials['username'] == env('USERNAME') && $credentials['password'] == env('PASSWORD');

}

public function byId($id)

{

// maybe throw an expection?

}

public function user()

{

// you will have to implement this maybe.

}

}

配置示例

在config / jwt.php中的providers数组中,更改以下内容:

'auth' => 'Tymon\JWTAuth\Providers\Auth\IlluminateAuthAdapter',

对此:

'auth' => 'MyNamespace\MyCustomAuthenticationProvider',

其他注意事项

>在任何地方都不能使用env()函数.最好在配置文件中使用它,然后在其他任何地方使用config()函数.

>您可能还需要重新实现用户提供者.

标签:guzzle,laravel,laravel-5-2,jwt,php

来源: https://codeday.me/bug/20191118/2029058.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值