php-Laravel中没有数据库的JWT身份验证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Laravel中没有数据库的JWT身份验证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1866字,纯文字阅读大概需要3分钟。
内容图文
我对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,我已经在路由,内核,中间件等内部进行了设置.
我成功创建了一个“声明”,但是我需要通过编码“有效载荷”来创建令牌.
<?php
$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()函数.
>您可能还需要重新实现用户提供者.
内容总结
以上是互联网集市为您收集整理的php-Laravel中没有数据库的JWT身份验证全部内容,希望文章能够帮你解决php-Laravel中没有数据库的JWT身份验证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。