JWT官网

https://jwt.io/

选择第一个

composer require firebase/php-jwt

use Firebase\JWT\ExpiredException;
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use Firebase\JWT\SignatureInvalidException;
public function createToken()
{
$jwtContent = [
// 签发人,这里采用当前站点域名
'iss' => 'myName',
// 签发时间,当前时间戳
'iat' => time(),
// 到期时间,1天后
'exp' => time() + 86400,
// 自定义数据
'data' => [
'user_id' => 1,
'user_name' => 'jack'
]
];
// 自定义 key,用于加密 token,只保存在服务端,不可泄漏。
// api、admin端可以设置两个不同的
$key = 'iwsojfiowejgiroegnioamr';
// 使用 HS256 算法,生成 token 。
$token = JWT::encode($jwtContent, $key, 'HS256');
// 打印输出
echo($token);
}

public function checkToken()
{
try {
// 此 key 必须和生成 token 时的一致。
$key = 'iwsojfiowejgiroegnioamr';
// 接收客户端提交的 token 。
$token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJteU5hbWUiLCJpYXQiOjE2OTQ1MzI5NjYsImV4cCI6MTY5NDUzMjk4NiwiZGF0YSI6eyJ1c2VyX2lkIjoxLCJ1c2VyX25hbWUiOiJqYWNrIn19.p4Ri4jEv5iEM0vMEcmYh5Ipzwqh7iGJKYVDAetPHVIs';
$test = JWT::decode($token, new Key($key, 'HS256'));
dump($test);
dump($test->data->user_id);
} catch (SignatureInvalidException $signatureInvalidException) {
// 获取验证失败时抛出的错误信息
//dump($signatureInvalidException->getMessage());
dump('token错误');
} catch (ExpiredException $expiredException) {
// 获取 token 过期时抛出的错误信息
//dump($expiredException->getMessage());
dump('token过期');
} catch (\Exception $exception) {
// 获取抛出的其它错误信息
//dump($exception->getMessage());
dump('token错误');
}
}

假设token过期时间为3天,如果用户连续使用2天,到了第三天想不用重新登录,可以延长过期时间

方案一:登录时,把过期时间返回给前端,让前端在过期前重新获取新token

php使用jwt作登录验证的更多相关文章

  1. springboot security+redis+jwt+验证码 登录验证

    概述 基于jwt的token认证方案 验证码 框架的搭建,可以自己根据网上搭建,或者看我博客springboot相关的博客,这边就不做介绍了.验证码生成可以利用Java第三方组件,引入 <dep ...

  2. Django-rest_framework中利用jwt登录验证时,自定义返回凭证和登录校验支持手机号

    安装 pip install djangorestframework-jwt 在Django.settings中配置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATIO ...

  3. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十四║ Vuex + JWT 实现授权验证登录

    壹周回顾 哈喽,又是元气满满的一个周一,又与大家见面了,周末就是团圆节了,正好咱们的前后端也要团圆了,为什么这么说呢,因为以后的开发可能就需要前后端一起了,两边也终于会师了,还有几天Vue系列就基本告 ...

  4. Spring Boot + Security + JWT 实现Token验证+多Provider——登录系统

    首先呢就是需求: 1.账号.密码进行第一次登录,获得token,之后的每次请求都在请求头里加上这个token就不用带账号.密码或是session了. 2.用户有两种类型,具体表现在数据库中存用户信息时 ...

  5. 【SSM项目】尚筹网(四)JWT以及基于拦截器的前后端分离登录验证

    引入JWT前后端交互 JsonWebToken(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.JWT就是一段字符串,分为三段[头部.载荷.签证]. 1 后端配置 1.1 ...

  6. 1、传统身份验证和JWT的身份验证

    1.传统身份验证和JWT的身份验证 传统身份验证:       HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用.这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过 ...

  7. djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习

    Django REST framework JWT djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习 SECRET_KEY = '1)q(f8jrz^edwtr2 ...

  8. SpringBoot集成JWT实现token验证

    原文:https://www.jianshu.com/p/e88d3f8151db JWT官网: https://jwt.io/ JWT(Java版)的github地址:https://github. ...

  9. 基于Ajax与用户认证系统的登录验证

    一.登录页面 from django.contrib import admin from django.urls import path from blog import views urlpatte ...

  10. 【笔记】vue+springboot前后端分离实现token登录验证和状态保存的简单实现方案

    简单实现 token可用于登录验证和权限管理. 大致步骤分为: 前端登录,post用户名和密码到后端. 后端验证用户名和密码,若通过,生成一个token返回给前端. 前端拿到token用vuex和lo ...

随机推荐

  1. bash: _get_comp_words_by_ref: command not found 报错

    没有安装补全的包 错误信息 bash: _get_comp_words_by_ref: command not found 表明你的 shell 中可能存在补全功能的问题. 通常,这种错误发生在你的系 ...

  2. 记一次 .NET某工控视觉自动化系统 卡死分析

    一:背景 1. 讲故事 今天分享的dump是训练营里一位学员的,从一个啥也不会到现在分析的有模有样,真的是看他成长起来的,调试技术学会了就是真真实实自己的,话不多说,上windbg说话. 二:WinD ...

  3. kettle从入门到精通 第六十一课 ETL之kettle 任务调度器,轻松使用xxl-job调用kettle中的job和trans

    1.大家都知道kettle设计的job流程文件有个缺点:只能设置简单的定时任务,无法设置复杂的如支持cron表达式的job. 今天给大家分享一个使用xxl-job调度carte的流程文件的示例.整个调 ...

  4. 如何监控文件变化,比如密码修改导致 shadow 文件变化

    原始需求是如果系统的密码被修改,或者创建了新用户,就告警出来.本质上,只需要监控 /etc/shadow 文件变化即可.但是在指标监控体系里,这个事情就比较棘手,只能把文件的 mtime 作为指标的值 ...

  5. xshell和xftp远程SSH密钥连接腾讯云服务器

    1.在腾讯云中创建密钥,关机,绑定. 2.xshell和xftp导入密钥,填写的用户名和密码验证是 腾讯云的主机的root和密码(关键,而不是创建密钥的用户名和密码),该密码可以重置.

  6. getRefs is undefined html vue2项目 报错

    vue2项目提示 getRefs is undefined 在div上面写了,ref,还写了v-if 然后再watch中操作了 ref 导致报错. 分析: 组件因为v-if 为 false 没有注册和 ...

  7. 如何在 VSCode 中配置和编写 LINGO

    目录 如何在 VSCode 中配置和编写 LINGO 安装 VSCode 扩展 LINGO 脚本文件与 runlingo 命令 LINGO 命令行交互和脚本文件 配置 Visual Stdio Cod ...

  8. vue cli4.0项目引入typescript

    现有的项目是采用vue cli4.0脚手架生成的,现在想要引入typescript. 1.执行安装命令 npm install --save-dev typescript npm install -- ...

  9. Prometheus监控系统(一)Prometheus介绍

    1. Prometheus简介 Prometheus受启发于Google的Brogmon监控系统(类似kubernetes是从Google的Brog系统演变而来).于2012年以开源形式发布,在201 ...

  10. 【路径规划】 The Dynamic Window Approach to Collision Avoidance (附python代码实例)

    引用与前言 参考链接 引用参考如下: 博客园解释:https://www.cnblogs.com/dlutjwh/p/11158233.html 这篇博客园写的贼棒!我当时就是一边对着论文一边对着他这 ...