哪里有做网站的公司校园网站建设网

web/2025/10/1 10:28:33/文章来源:
哪里有做网站的公司,校园网站建设网,现在由哪些网站可以做外链,淘大象排名查询最近研究了下基于token的身份验证#xff0c;并将这种机制整合在个人项目中。现在很多网站的认证方式都从传统的seesioncookie转向token校验。对比传统的校验方式#xff0c;token确实有更好的扩展性与安全性。    传统的sessioncookie身份验证    由于HTTP是无状态的…   最近研究了下基于token的身份验证并将这种机制整合在个人项目中。现在很多网站的认证方式都从传统的seesioncookie转向token校验。对比传统的校验方式token确实有更好的扩展性与安全性。    传统的sessioncookie身份验证    由于HTTP是无状态的它并不记录用户的身份。用户将账号与密码发送给服务器后后台通过校验但是并没有记录状态于是下一次用户的请求仍然需要校验身份。为了解决这一问题需要在服务端生成一条包含用户身份的记录也就是session再将这条记录发送给用户并存储在用户本地即cookie。接下来用户的请求都会带上这条cookie若客户端的cookie与服务端的session能对应上则说明用户身份验证通过。    token身份校验    流程大致如下    第一次请求时用户发送账号与密码    后台校验通过则会生成一个有时效性的token,再将此token发送给用户    用户获得token后将此token存储在本地一般存储在localstorage或cookie    之后的每次请求都会将此token添加在请求头里所有需要校验身份的接口都会被校验token若token解析后的数据包含用户身份信息则身份验证通过。    对比传统的校验方式token校验有如下优势    在基于token的认证token通过请求头传输而不是把认证信息存储在session或者cookie中。这意味着无状态。你可以从任意一种可以发送HTTP请求的终端向服务器发送请求。    可以避免CSRF攻击    当在应用中进行 session的读写或者删除操作时会有一个文件操作发生在操作系统的temp 文件夹下至少在第一次时。假设有多台服务器并且 session 在第一台服务上创建。当你再次发送请求并且这个请求落在另一台服务器上session 信息并不存在并且会获得一个“未认证”的响应。我知道你可以通过一个粘性 session 解决这个问题。然而在基于 token 的认证中这个问题很自然就被解决了。没有粘性 session 的问题因为在每个发送到服务器的请求中这个请求的 token 都会被拦截。    下面介绍一下利用nodejwt(jwt教程)搭建简易的token身份校验    示例    当用户第一次登录时提交账号与密码至服务器服务器校验通过则生成对应的token代码如下    const fs require(fs);    const path require(path);    const jwt require(jsonwebtoken);    //生成token的方法    function generateToken(data){    let created Math.floor(Date.now() / 1000);    let cert fs.readFileSync(path.join(__dirname, ../config/pri.pem));//私钥    let token jwt.sign({    data,    exp: created 3600 * 24    }, cert, {algorithm: RS256});    return token;    }    //登录接口    router.post(/oa/login, async (ctx, next) {    let data ctx.request.body    let {name, password} data;    let sql SELECT uid FROM t_user WHERE name? and password? and is_delete0, value [name, md5(password)];    await db.query(sql, value).then(res {    if (res res.length 0) {    let val res[0];    let uid val[uid];    let token generateToken({uid});    ctx.body {    ...Tips[0], data: {token}    }    } else {    ctx.body www.michenggw.com/ Tips[1006];    }    }).catch(e www.yigouyule2.cn {    ctx.body www.mhylpt.com/ Tips[1002];    });    });    用户通过校验将获取到的token存放在本地    ?    1    store.set(loginedtoken,token);//store为插件    之后客户端请求需要验证身份的接口都会将token放在请求头里传递给服务端   service.interceptors.request.use(config {    let params config.params |www.gcyl158.com| {};    let loginedtoken store.get(loginedtoken);    let time Date.now(www.gcyL157.com);    let {headers} config;    headers {.www.feifanyule.cn/..headers,loginedtoken};    params {...params,_:time};    config {...config,params,headers};    return config;    }, error {    Promise.reject(error);    })    服务端对所有需要登录的接口均拦截token并校验合法性。    ?    1    2    3    4    5    6    7    8    9    10    11    12    13    14    15    16    17    18    19    20    21    22    23    24    25    26    27    28    29    30    31    32    33    34    35    36    function verifyToken(token){    let cert fs.readFileSync(path.join(__dirname, ../config/pub.pem));//公钥    try{    let result jwt.verify(token, cert, {algorithms: [RS256]}) || {};    let {exp 0} result,current Math.floor(Date.now()/1000);    if(current exp){    res result.data || {};    }    }catch(e){    }    return res;    }    app.use(async(ctx, next) {    let {url } ctx;    if(url.indexOf(/user/) -1){//需要校验登录态    let header ctx.request.header;    let {loginedtoken} header;    if (loginedtoken) {    let result verifyToken(loginedtoken);    let {uid} result;    if(uid){    ctx.state {uid};    await next();    }else{    return ctx.body Tips[1005];    }    } else {    return ctx.body Tips[1005];    }    }else{    await next();    }    });    本示例使用的公钥与私钥可自己生成操作如下    打开命令行工具输入openssl打开openssl;    生成私钥genrsa -out rsa_private_key.pem 2048    生成公钥 rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 转载于:https://www.cnblogs.com/qwangxiao/p/10057156.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深圳网站制作需要多少钱东莞网站系统后缀

一、导出数据库 1、导出完整数据:表结构数据 mysqldump -u用户名 -p 数据库名 > 数据库名.sql 举例:以下命令可以导出 abc 数据库的数据和表结构 /usr/local/mysql/bin/mysqldump -uroot -p abc > abc.sql2、只导出表结构 mysqldump -u用户名 -p…

小型企业网站如何建设wordpress调用header

Empty空状态组件&#xff1a;空状态时的占位提示。 如第一次进入当前功能模块时&#xff0c;数据状态为空&#xff0c;则展示空状态&#xff0c;可用到Empty组件 1.How? <el-empty description"描述文字"></el-empty> 2.自定义图片 通过设置 image 属…

网站社区的建设wordpress文章行距

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 环境说明2. 安装配置2.1 配置user信息2.2 config的三个作用域 3. 建git仓库3.1 把已有的项目代码纳入git管理3.2 新建的项目直接用git管理3.3 配置local的user和email3.4 优先级&…

手机网站幻灯片网站建设与维护流程图

目录 python计算NN的值 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算NN的值 第十四届蓝桥杯青少年组python省赛真题 一、题目要求…

提供网站建设课程个人网站空间多大合适

文章目录&#xff1a; 一&#xff1a;相关常识 1.考试报名时间 2.报名地方 费用 证件 3.考试流程 4.普通话等级说明 二&#xff1a;题型 三&#xff1a;技巧 1.前三题 2.命题说话 四&#xff1a;普通话考试题库 1.在线题库 2.下载题库 一&#xff1a;相关常识 …

eclipse做的网站flash教程网站首页

e2studio开发三轴加速度计LIS2DW12.3--检测活动和静止状态 概述视频教学样品申请源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()…

装修公司网站源码免费行情软件app网站大全下载安装

1、# 软件下载地址 https://prometheus.io/download/ https://grafana.com/grafana/download https://prometheus.io/download/ Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。 Prometheus 的优点 1、非常少的外部依赖,安装…

江阴网站开发招聘托管网站是什么意思

一般进入APP都有欢迎界面&#xff0c;基本都是水平滚动的&#xff0c;今天和大家分享一个垂直滚动的例子。 先来看看效果把&#xff1a; 首先是布局文件&#xff1a; <com.example.verticallinearlayout.VerticalLinearLayout xmlns:android"http://schemas.android.…

榕江网站建设专业做网站的公司有

干系人绩效域 干系人绩效域涉及与干系人相关的活动和职能。在项目整个生命周期过程中&#xff0c;有效执行本绩效域可以实现的预期目标主要包含&#xff1a;①与干系人建立高效的工作关系&#xff1b;②干系人认同项目目标&#xff1b;③支持项目的干系人提高了满意度&#xf…

网站关键词选取的步骤郑州旅游网站制作

Leetcode 45. 跳跃游戏 II 动态规划 使用dp [ ] 记录每个位置可达的最小步数&#xff0c;每到达一个点时&#xff0c;更新该点所能跳跃区间内的所有点的dp值 时间复杂度较高 class Solution {public int jump(int[] nums) {int n nums.length;int dp[] new int [n];int N …

千元低价网站建设付费链接生成软件

科学、技术、工程、应用 科学&#xff1a;是什么、为什么技术&#xff1a;怎么做工程&#xff1a;怎样做的多快好省应用&#xff1a;怎么使用 定义 机器学习&#xff1a;利用经验改善系统自身的性能。 研究 智能数据分析&#xff08;数据分析算法&#xff09; 典型的机器…

中国建设银网站网站如何做绿标

js 序列化内置对象本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题&#xff0c;包括对象创建&#xff0c;并发&#xff0c;序列化&#xff0c;反射等。 它将指导您完成Java掌握的旅程&#xff01; 在这里查看 &#x…

品牌网站建设有哪些方面软件app开发定制

OpenCV学习笔记&#xff08;十&#xff09;&#xff1a;图像金字塔Pyramid和图像缩放&#xff1a;pyrDown(),pyrUp(),resize() 一、图像金字塔定义&#xff1a; 图像金字塔是图像中多尺度表达的一种&#xff0c;最主要用于图像的分割&#xff0c;是一种以多分辨率来解释图像的…

网站开发需求做娱乐网站被坑

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 [TOC](文章目录) 一、程序地址空间回顾 我们在讲C语言的时候&#xff0c;老师给大家画过这样的空间布局…

建设网站的平台东莞债务优化

回调函数与qsort的讲解和模拟实现 前言1. 回调函数是什么&#xff1f;2. qsort2.1 使用qsort函数排序整型数据2.2 使用qsort排序结构数据 3. qsort函数的模拟实现 前言 回调函数是一个函数&#xff0c;它作为参数传递给另一个函数&#xff0c;并且能够在该函数内部被调用。在C…

邦利博客网站怎么做的开发网站代码量

1. 题目 在一个给定的数组nums中&#xff0c;总是存在一个最大元素 。 查找数组中的最大元素是否至少是数组中每个其他数字的两倍。 如果是&#xff0c;则返回最大元素的索引&#xff0c;否则返回-1。 示例 1: 输入: nums [3, 6, 1, 0] 输出: 1 解释: 6是最大的整数, 对于…

黄石做网站的公司正版网站设计制作

这篇文章将展示如何使用Elixir和Phoenix框架构建REST API。 重点将是为持久化到Postgres数据库后端的模型提供CRUD&#xff08;创建&#xff0c;读取&#xff0c;更新&#xff0c;删除&#xff09;端点。 我应该警告你&#xff1b; 这是一个简单的例子。 但是&#xff0c;希望它…

如何用iis部署网站wordpress菜单编辑

List是什么&#xff1f;List顾名思义就是列表&#xff0c;那么它具体描述是什么呢&#xff1f;列表是一个线性的集合&#xff0c;它允许用户在任何位置插入、删除、访问和替换元素。在Python中list是保留字&#xff0c;List中的每个元素都有自己的编号&#xff0c;很像C、C、ja…

龙华建设网站公司企业网站设计北京

rz和sz是Linux/Unix同Windows进行Zmodem文件传输的命令工具,都使用Zmodem文件传输协议。 rz&#xff08;上传命令&#xff09;: 运行该命令会弹出一个文件选择窗口&#xff0c;从本地选择文件上传到Linux服务器。 (receive zmodem的缩写)…

创世网站lamp 搭建wordpress

iOS11 UICollectionView顶到屏幕顶端会出现一个20高度的白色间隔&#xff0c;是由于UICollectionView的自动调整功能为状态栏留出的位置 只需在创建UICollectionView时加入如下代码关闭自动调整&#xff1a; 该属性是iOS11新加入的&#xff0c;所以一定要在前面加上判断&#x…