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

淄博网站优化推广优秀网站ui设计

淄博网站优化推广,优秀网站ui设计,wordpress 制作瀑布流,柬埔寨网站建设运营维护概述 登录功能是对于每个动态系统来说都是非常基础的功能#xff0c;用以区别用户身份、和对应的权限和信息#xff0c;设计出一套安全的登录方案尤为重要#xff0c;接下来我介绍一下常见的认证机制的登录设计方案。 方案设计 HTTP 是一种无状态的协议#xff0c;客户端…概述 登录功能是对于每个动态系统来说都是非常基础的功能用以区别用户身份、和对应的权限和信息设计出一套安全的登录方案尤为重要接下来我介绍一下常见的认证机制的登录设计方案。 方案设计 HTTP 是一种无状态的协议客户端每次发送请求时首先要和服务器端建立一个连接在请求完成后又会断开这个连接。系统登录的本质是确认用户的合法性和身份。 Cookie Session 登录 在 B/S 系统中登录功能通常都是基于 Cookie 来实现的。当用户登录成功后一般会将登录状态记录到 Session 中。要实现服务端对客户端的登录信息进行验证都需要在客户端保存一些信息SessionId并要求客户端在之后的每次请求中携带它们。在这样的场景下使用 Cookie 无疑是最方便的因此我们一般都会将 Session 的 Id 保存到 Cookie 中当服务端收到请求后通过验证 Cookie 中的信息来判断用户是否登录 。 用户首次登录流程 1、用户访问 www.stark.com/login并输入密码登录。 2、服务器验证密码无误后会创建 SessionId并将它保存起来。 3、服务器端响应这个 HTTP 请求并通过 Set-Cookie 头信息将 SessionId 写入 Cookie 中。 cookice后续校验流程 获取cookice后续的访问就可以直接使用 Cookie 进行身份验证了 1、用户访问 www.stark.com/console 页面时会自动带上第一次登录时写入的 Cookie。 2、服务器端比对 Cookie 中的 SessionId 和保存在服务器端的 SessionId 是否一致。 3、如果一致则身份验证成功访问页面如果无效则需要用户重新登录。 需要注意的是: Cookie Session 的方案中最关键的环节是传递Cookie有时可能会面临Cookie禁用的情况记住只要把Cookie的值传递给服务端得到SessionId即可可以是存储在LocalStorage也可以使用URL 的GET方式传输。 Cookie Session 技术实现 Cookie Session的核心点在于数据的加密和解密的算法在用户登录进行加密、生成Cookie,在之后的交互的时候携带在header的信息头中。 加密函数代码: function passportEncrypt($txt, $key stark-server2024#$!): string {$txt yy-依加衣- . time() . - . $txt;srand((double)microtime() * 1000000);$encrypt_key md5(rand(0, 32000));// 变量初始化$ctr 0;$tmp ;for ($i 0; $i strlen($txt); $i) {$ctr $ctr strlen($encrypt_key) ? 0 : $ctr;$tmp . $encrypt_key[$ctr] . ($txt[$i] ^ $encrypt_key[$ctr]);}return base64_encode(passportKey($tmp, $key)); }function passportKey($txt, $encrypt_key): string {$encrypt_key md5($encrypt_key);$ctr 0;$tmp ;for ($i 0; $i strlen($txt); $i) {$ctr $ctr strlen($encrypt_key) ? 0 : $ctr;$tmp . $txt[$i] ^ $encrypt_key[$ctr];}return $tmp; }字符串解密函数: function passportDecrypt($txt, $key stark-server2024#$!) {$txt str_replace( , , $txt);$txt passportKey(base64_decode($txt), $key);$tmp ;for ($i 0; $i strlen($txt); $i) {if (!isset($txt[$i]) || !isset($txt[$i 1])) {return 0;} else {$tmp . $txt[$i] ^ $txt[$i];}}$tmp explode(-, $tmp);$tmp[3] $tmp[3] ?? 0;return $tmp[3]; }加密解密实现的具体逻辑: //加密 $data [admin_id $adminInfo[admin_id],admin_name $adminInfo[admin_name], ]; $demoStr json_encode($data,JSON_UNESCAPED_UNICODE); $authorization passportEncrypt($demoStr);Cookie::set(Auth-stark, $authorization,[prefix think, expire 3600] );//解密 $json passportDecrypt($authorization); if(mb_strlen($json) 0){$demoData json_decode($json,true); }Token 登录 由于服务器端需要对接大量的客户端也就需要存放大量的 SessionId这样会导致服务器压力过大、无法避免 CSRF 攻击等缺点我们可以使用 Token 的登录方式。 Token是通过服务端生成的一串字符串以作为客户端请求的一个令牌。当第一次登录后服务器会生成一个 Token 并返回给客户端客户端后续访问时只需带上这个 Token 即可完成身份认证很多企业使用JWT的技术来进行登录验证方式。 用户首次登录 1、用户访问 www.stark.com/login输入账号密码并点击登录。 2、服务器端验证账号密码无误创建 Token。 3、服务器端将 Token 返回给客户端由客户端存储在Header头信息里。 后续页面访问 1、用户访问 www.stark.com/login 时带上第一次登录时获取的 Token。 2、服务器端验证该 Token 有效则身份验证成功无效则踢回重新的登录。 Token 生成方式 最常见的 Token 生成方式是使用 JWTJson Web Token它是一种简洁的、自包含的方法用于通信双方之间以 JSON 对象的形式安全的传递信息。 答案其实就在 Token 字符串中其实 Token 并不是一串杂乱无章的字符串而是通过多种算法拼接组合而成的字符串。 JWT 算法主要分为 3 个部分header头信息playload消息体signature签名。 header 部分指定了该 JWT 使用的签名算法playload 部分表明了 JWT 的意图signature 部分为 JWT 的签名主要为了让 JWT 不能被随意篡改。 JWT Token 技术实现 Compose 安装 Jwt 的两种方式,我使用的是6.10版本 : ## 安装 composer require firebase/php-jwt 6.10使用 composer.json 安装加入文件,使用composer install require: {firebase/php-jwt: ^6.10 }Jwt 主要是进行加密和解密$payload定义的是你需要存储的数组信息 public static function encode(int $adminId 0): string {$redis new Redis(config(cache.stores.redis));$secretKey Env::get(JWT.key); // 获取JWT生成签名的密钥$alg Env::get(JWT.alg); // 获取JWT加密算法$payload [admin_id $adminId, // 存储用户IDexp time() Env::get(JWT.exp), // 设定过期时间];$jwt JWT::encode($payload, $secretKey, $alg); // 生成JWT令牌$token config(prefix.auth);$redis-set($token.$adminId, $jwt,Env::get(JWT.exp) - rand(10,99));return $jwt; }解密的逻辑 public static function decode(string $AccessToken ){$secretKey Env::get(JWT.key); // 获取JWT生成签名的密钥$alg Env::get(JWT.alg); // 获取JWT加密算法$secretKeyObj new Key($secretKey,$alg);$headers new stdClass();return JWT::decode($AccessToken, $secretKeyObj,$headers); // 使用JWT解密Token }
http://www.w-s-a.com/news/724687/

相关文章:

  • 公众号h5网站开发wordpress文章主图
  • ps怎么艺术字字体设计网站我想自己做网站
  • 北京做机柜空调的网站模板网站和插件
  • 手机购物网站模板wordpress添加分类文档
  • 网站开发知识网上怎么申请个人营业执照
  • 音乐网站建设费用营销策略都有哪些4p
  • 深圳制作网站怎么样wordpress 学习视频
  • 新公司注册网站传奇手游大型网站
  • 无极网站网站涉案多少人被抓网站的按钮怎么做
  • ds216j做网站做购物网站那个好
  • 做淘宝门头的网站阿里巴巴官网app
  • 安踏网站建设策划方案如何通过域名访问网站
  • 建设网站破解版seo查询 站长之家
  • 太原模板建站平台旅游企业网站建设工作的通知
  • 网站国外建设超级简历模板官网
  • 上海网站建设市场医药网站怎么做
  • 宁夏成城建设集团网站网店美工课本
  • 哪些网站的简历做的比较好政务服务 网站 建设方案
  • 如何建设个人网站凡科怎么样vps安装wordpress后怎样登录
  • 学seo朝阳区seo
  • 网站开发团队成员皮具网站建设
  • 国外外贸需求网站响应式布局网页
  • 手机端便民服务平台网站建设昆明网络哪家好
  • 产品网站建设找哪家舟山信息港
  • 唐山网站建设汉狮怎么样seol英文啥意思
  • 深圳小程序网站开发公司网页制作模板视频教程
  • 电子商务网站开发开题报告wordpress更改后台地址
  • 网站静态前端是什么工作
  • 餐饮门户网站 方案怎么做创业好项目
  • 做百度手机网站推广普通话的宣传标语