php使用jwt作登录验证
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作登录验证的更多相关文章
- springboot security+redis+jwt+验证码 登录验证
概述 基于jwt的token认证方案 验证码 框架的搭建,可以自己根据网上搭建,或者看我博客springboot相关的博客,这边就不做介绍了.验证码生成可以利用Java第三方组件,引入 <dep ...
- Django-rest_framework中利用jwt登录验证时,自定义返回凭证和登录校验支持手机号
安装 pip install djangorestframework-jwt 在Django.settings中配置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATIO ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十四║ Vuex + JWT 实现授权验证登录
壹周回顾 哈喽,又是元气满满的一个周一,又与大家见面了,周末就是团圆节了,正好咱们的前后端也要团圆了,为什么这么说呢,因为以后的开发可能就需要前后端一起了,两边也终于会师了,还有几天Vue系列就基本告 ...
- Spring Boot + Security + JWT 实现Token验证+多Provider——登录系统
首先呢就是需求: 1.账号.密码进行第一次登录,获得token,之后的每次请求都在请求头里加上这个token就不用带账号.密码或是session了. 2.用户有两种类型,具体表现在数据库中存用户信息时 ...
- 【SSM项目】尚筹网(四)JWT以及基于拦截器的前后端分离登录验证
引入JWT前后端交互 JsonWebToken(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.JWT就是一段字符串,分为三段[头部.载荷.签证]. 1 后端配置 1.1 ...
- 1、传统身份验证和JWT的身份验证
1.传统身份验证和JWT的身份验证 传统身份验证: HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用.这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过 ...
- djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习
Django REST framework JWT djangorestframework-jwt自带的认证视图进行用户登录验证源代码学习 SECRET_KEY = '1)q(f8jrz^edwtr2 ...
- SpringBoot集成JWT实现token验证
原文:https://www.jianshu.com/p/e88d3f8151db JWT官网: https://jwt.io/ JWT(Java版)的github地址:https://github. ...
- 基于Ajax与用户认证系统的登录验证
一.登录页面 from django.contrib import admin from django.urls import path from blog import views urlpatte ...
- 【笔记】vue+springboot前后端分离实现token登录验证和状态保存的简单实现方案
简单实现 token可用于登录验证和权限管理. 大致步骤分为: 前端登录,post用户名和密码到后端. 后端验证用户名和密码,若通过,生成一个token返回给前端. 前端拿到token用vuex和lo ...
随机推荐
- 基于centos7的企业级ceph集群搭建[nautilus14.22版]
集群规划 本案例通过ceph-deploy方式部署 主机名 配置 外网IP / 内网IP 角色 系统版本 ceph-node01 磁盘x3 50G 192.168.3.101/24 172.16.1. ...
- 8.16考试总结(NOIP模拟41)[你相信引力吗·marshland·party?·半夜]
美丽的不是这个世界,而是看世界的你的眼神. T1 你相信引力吗 解题思路 好像只有我一个人没有看出来这个题是单调栈(现在一看区间问题就是双指针,线段树) 维护一个单调递减的栈. 我们把最大值放到左端点 ...
- Qt开发技术:Q3D图表开发笔记(四):Q3DSurface三维曲面图颜色样式详解、Demo以及代码详解
前言 qt提供了q3d进行三维开发,虽然这个框架没有得到大量运用也不是那么成功,性能上也有很大的欠缺,但是普通的点到为止的应用展示还是可以的. 其中就包括华丽绚烂的三维图表,数据量不大的时候是可 ...
- mkfs.xfs报错 mkfs.xfs: /dev/new/new_box appears to contain an existing filesystem (ext4). mkfs.xfs: Use the -f option to force overwrite.
在设置逻辑卷文件类型时候报错 mkfs.xfs: /dev/new/new_box appears to contain an existing filesystem (ext4). mkfs.xfs ...
- LeetCode 40. Combination Sum II 组合总和 II (C++/Java)
题目: Given a collection of candidate numbers (candidates) and a target number (target), find all uniq ...
- golang sync.Once 保证某个动作仅执行一次的机制
type Once struct { done atomic.Uint32 m Mutex } 这段代码是 Go 语言标准库中 sync 包的一部分,定义了一个 Once 类型.Once 类型用于确保 ...
- EF 结合 PagingModel
PagingModel pagingModel using (var db = new PayLogDbContext()) { var data = db.Database.Query<Mer ...
- leetcode | 103. 二叉树的锯齿形层序遍历 | JavaScript实现
题目 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 .(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 思路 按照正常的层序遍历,然后再对下标为奇数的数组进 ...
- es创建索引及别名更新mapping方法 elasticsearch [nested] nested object under path [XXX] is not of nested type
[nested] nested object under path [XXX] is not of nested type这是因为在创建索引时没有指定类型为数组,这就是一个大坑,ES官方说可以不用指定 ...
- CAT监控指标
CAT监控指标 CAT 是基于 Java 开发的实时应用监控平台.官方文档:https://github.com/dianping/cat CAT提供以下几种报表:Transaction报表 一段代码 ...