当前位置: 首页 > wzjs >正文

餐饮网站开发背景佛山建站怎么做

餐饮网站开发背景,佛山建站怎么做,网站死链如何修改,厦门seo推广外包首先了解一下什么是JWT JWT 是一种开放标准(RFC 7519),用于在各方之间以 JSON 对象形式安全传输信息4。其核心特点包括: 结构:由三部分组成(Header、Payload、Signature),通过点号…

首先了解一下什么是JWT

JWT 是一种开放标准(RFC 7519),用于在各方之间以 JSON 对象形式安全传输信息4。其核心特点包括:

结构:由三部分组成(Header、Payload、Signature),通过点号分隔,例如 xxxxx.yyyyy.zzzzz2。Header:声明加密算法和 Token 类型(如 HS256)。Payload:包含用户信息、注册声明(如 iss、exp)和自定义数据。Signature:通过密钥对前两部分签名,确保数据完整性。
用途:身份认证:用户登录后,服务端生成 JWT 返回客户端,客户端后续请求携带 JWT 以访问受保护资源1。

JWT的优势

  1. 无状态性

    优势:JWT 自身包含用户身份和权限信息,服务端无需存储会话数据(如 Session),直接通过验证 Token 签名即可完成认证。
    效果:降低服务端资源消耗,天然支持分布式系统和横向扩展。
    对比:传统 Session 需要服务端维护会话状态,多服务器场景需共享 Session 存储(如 Redis),增加复杂度。
    
  2. 跨域支持

    优势:JWT 通过 HTTP 头(如 Authorization: Bearer <token>)传递,不受 Cookie 同源策略限制。
    应用场景:适合前后端分离、跨域 API 调用及微服务架构。
    对比:Cookie 需额外配置 CORS 策略,且存在跨域限制。
    
  3. 安全性增强

    优势:防 CSRF:Token 存储在客户端而非 Cookie,避免跨站请求伪造攻击。
    防篡改:签名机制(如 HS256)确保 Token 内容完整性和来源可信。
    
  4. 标准化与灵活性

    优势:JWT 遵循 RFC 7519 标准,支持多种签名算法(如 RSA、HMAC)和自定义声明(Claims),便于集成第三方服务。
    扩展场景:单点登录(SSO)、API 网关鉴权等。
    

搭建JWT工具类

首先确定一些参数

private static $key = '4875c029de194dd79ade2ee5aa68ee57';//密钥
private const exp = 3600;//token过期时间 1小时
private const alg = 'HS256';//加密算法
private const iss = 'ceshi';// 签发人
private const aud = 'web';// 受众   

密钥可以自己随便写,但是建议不要太简单
签发人一般是用于校验该token是不是自己的
受众一般是用于区分web和app端的

密钥可以使用下面代码生成一个

public function init()
{$md5 = md5(time());return $md5;
}

生成密钥的方法

public static function createToken($data)
{$time = time();$payload = ["iat" => $time, // 签发时间"nbf" => $time, // 生效时间"exp" => self::exp + $time, // 失效时间"iss" => self::iss,// 签发人"aud" => self::aud,// 受众"data" => $data, // 自定义数据];return JWT::encode($payload, self::$key, self::alg);
}

使用样例

$token = Token::createToken(['id' => '1', 'role' => 'admin']);

解析密钥并校验的方法

解析方法
private static function decodeToken($token)
{try {return JWT::decode($token, new Key(self::$key, self::alg));} catch (\Exception $e) {throw new HttpResponseException(json(['code' => 401, 'msg' => 'token无效']));}
}
验证管理员
public static function isAdmin($token)
{$decodeToken = self::decodeToken($token);return $decodeToken->data->role === 'admin';
}

使用样例

if (!Token::isAdmin($token)) {$this->error('权限不足');
}
验证是否为本人token
public static function checkSelf($userId, $token)
{$decodeToken = self::decodeToken($token);return $decodeToken->data->id == $userId;}

使用样例

if (!Token::checkSelf($id, $token)) {$this->error('权限不足');
}
完整代码
<?phpnamespace app\common\library;//这个命名空间记得要换成自己的use Firebase\JWT\JWT;
use Firebase\JWT\Key;
use think\exception\HttpResponseException;class Token
{private static $key = '4875c029de194dd79ade2ee5aa68ee57';//密钥private const exp = 3600;//token过期时间 1小时private const alg = 'HS256';//加密算法private const iss = 'ceshi';// 签发人private const aud = 'web';// 受众public static function createToken($data){$time = time();$payload = ["iat" => $time, // 签发时间"nbf" => $time, // 生效时间"exp" => self::exp + $time, // 失效时间"iss" => self::iss,// 签发人"aud" => self::aud,// 受众"data" => $data, // 自定义数据];return JWT::encode($payload, self::$key, self::alg);}public static function isAdmin($token){$decodeToken = self::decodeToken($token);return $decodeToken->data->role === 'admin';}public static function checkSelf($userId, $token){$decodeToken = self::decodeToken($token);return $decodeToken->data->id == $userId;}private static function decodeToken($token){try {return JWT::decode($token, new Key(self::$key, self::alg));} catch (\Exception $e) {throw new HttpResponseException(json(['code' => 401, 'msg' => 'token无效']));}}}

使用JWT需要额外安装扩展

composer require firebase/php-jwt

文章转载自:

http://QNuBS7BH.wknjy.cn
http://O9eJlSRg.wknjy.cn
http://p3W4mBLN.wknjy.cn
http://B1HgNsF8.wknjy.cn
http://zIFmlEnM.wknjy.cn
http://7NpA3Xn6.wknjy.cn
http://OeviUUa7.wknjy.cn
http://ZOaepPbb.wknjy.cn
http://v7285Q1m.wknjy.cn
http://3tAYXBu9.wknjy.cn
http://UqKYGhUI.wknjy.cn
http://h9TWNMnu.wknjy.cn
http://0vo9hNsW.wknjy.cn
http://hPng3ewH.wknjy.cn
http://qJHrywQU.wknjy.cn
http://WWD7DkoV.wknjy.cn
http://6V3Kpyuv.wknjy.cn
http://8w1Oo8mG.wknjy.cn
http://MRazKRui.wknjy.cn
http://k6IOngC7.wknjy.cn
http://9ctP9Gyr.wknjy.cn
http://6Jq3BFJq.wknjy.cn
http://WIv28kjd.wknjy.cn
http://A375vCx3.wknjy.cn
http://0c90H3xW.wknjy.cn
http://eRXs2gXU.wknjy.cn
http://U9ccqHsH.wknjy.cn
http://SbDsDXTU.wknjy.cn
http://tER3WS2W.wknjy.cn
http://1FnI8vo6.wknjy.cn
http://www.dtcms.com/wzjs/683069.html

相关文章:

  • 做网站卖东西赚钱么群晖可以做网站吗
  • 采购网站建设伊春seo公司
  • 建筑设计专业的网站快速提高网站流量
  • 做铝材的网站小程序拉新项目
  • 简述网站开发工作流程室内设计联盟 官网
  • 做一个网站放网上要多少钱北京网络建设公司
  • 郑州哪里有做网站的外贸营销邮件范文
  • 关于建设 网站的请示怎样做网站的ico图片
  • 做学校网站的目的是什么修改wordpress上传图片路径
  • 石家庄网站建设工作室wordpress安装后优化
  • 百度网站前三名权重一般在多少网站后台建设内容
  • 广州企业网站模板建站东莞seo按天计费
  • 罗湖网站建域名解析到别人网站
  • 厦门专业网站营销html网页制作基础知识
  • 服装网站建设准备做网站的windowlcd
  • 如何用两个版本的wordpress站长工具seo综合查询pc
  • asp网站开发教案要想让别人网站卖我的东西怎么做
  • 云数据库可以做网站吗如何做网站源码
  • 关于网站建设要花多少钱王烨玺
  • 自己做的娱乐平台网站温州网站推广有哪些方法
  • 怎么注册微网站权威发布新闻的含义
  • 六安商务网站建设电话辽宁建设工程信息网 招标文件
  • 网站后台无ftp学广告设计难不难
  • 闲鱼上做网站域名主机 网站建设
  • 为什么企业需要建设网站企业服务类网站
  • 网站建议反馈应该怎么做延安市住建建设网站
  • 只做网站的陕西防疫最新政策
  • 网站页面自适应屏幕十大房地产公司排行榜
  • 常见电子商务网站基本模式网站仿制 个人
  • 网络设置的网站wordpress安卓客户端