ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-11-18 15:32:57  阅读:573  来源: 互联网

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


我对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()函数.
>您可能还需要重新实现用户提供者.

标签:guzzle,laravel,laravel-5-2,jwt,php
来源: https://codeday.me/bug/20191118/2029058.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有