作者:手机用户2602925213 | 来源:互联网 | 2023-09-15 09:03
今天突然就想用一下jwt生成一下token,那么说干就干
首先我先下载了一下composer
composer.phar
下载到本地以后,通过cmd命令行进行下载php-jwt,命令为:
php composer.phar require firebase/php-jwt
图片效果
vendor文件夹下就有我们所想要的文件
现在我们移入我们的根目录
现在我们进入登录页面,然后进行发放token,第一个框是账户,第二个是密码
这里是我们jwt.html 的源码
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="token punctuation">">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>JWTtitle>
head>
<body>
<input type="text" name="username" id="username">
<input type="password" name="password" id="password">
<button class="sub">提交button>
<input type="reset" value="重置">
<div class="power">
确认是否有权限
div>
body>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js">script>
<script>
$('.sub').click(function(){
$.ajax({
type:'GET',
url: "./login.php",
data:{
username:$('#username').val(),
password: $('#password').val()
},
success:function (e) {
localStorage.setItem('token',e);
console.log(localStorage.getItem('token'));
}
})
})
$('.power').click(function(){
if (localStorage.getItem('token') == null) {
alert('请登录获取token')
return false;
}
$.ajax({
type:'GET',
url: "./index.php",
headers:{
token:localStorage.getItem('token')
},
success:function (e) {
}
})
})
script>
html>
这个是我们点击提交ajax进行访问的php文件
use \Firebase\JWT\JWT;
require './vendor/autoload.php';
ini_set("display_errors","On");
error_reporting(E_ALL);
$config = [
'username' => 1,
'password' => 1
];
$params = $_GET;
if ($config != $params) {
echo 'username or password Wrong';
die;
}
$key = "wrkwd";
$payload = array(
"iat" => time(),
"nbf" => time(),
'exp' => time()+60,
'id' => 1
);
$jwt = JWT::encode($payload, $key);
echo $jwt;
我们输入账号跟密码点击提交,然后获取token,并存入浏览器缓存
然后我们点击确认是否有权限。
然后我们等待60s(我设置的exp 为60s),在进行点击返回的是
点击确认是否有权限的php文件(index.php)代码为
use \Firebase\JWT\JWT;
require './vendor/autoload.php';
ini_set("display_errors","On");
error_reporting(E_ALL);
$headers = getallheaders();
if (!isset($headers['Token'])) {
echo 'No Have Token'; die;
}
$key = "wrkwd";
$token = $headers['Token'];
try {
$decoded = JWT::decode($token, $key, array('HS256'));
echo 'Token 有效';
} catch (Firebase\JWT\ExpiredException $exception){
echo 'Token 无效';
}
这次是我简单的尝试奥,如果有什么问题,希望各位大佬可以提供帮助,谢谢大佬们!!
总结
1.账号密码登录,若正确则返回token
2.浏览器接收到token,存入本地(浏览器)缓存中
3.每次访问相关权限的时候,把本地缓存放入header头进行访问
4.php拦截器进行判断token。
希望自己可以努力成为自己想要的样子,加油加油!!!,大家也一起加油!!!
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45100995/article/details/114268847