web作业说明

  1. http的请求、响应过程是无状态的。
  2. 会话状态的跟踪

(1)session + cookie

(2)token 校验的方式(用户登陆成功之后,生成token,讲token响应到客户端去,客户端在本地存储中存储token,下次请求时,携带上token,到服务端后,服务端校验token的有效性进行后续的操作)

初始化一个token项目(可以是中文路径)

koa2 -e koa-token

cd koa-token

npm install

npm start

http://localhost:3000/设置允许跨域

views/index.ejs

<!DOCTYPE html>
<html><head><title>作业展示</title><link rel="stylesheet" href="/stylesheets/style.css" /></head><body><input type="text" id="username" /><input type="password" id="pwd" /><button id="btn">登录</button></body><script>let username = document.querySelector("#username");let pwd = document.querySelector("#pwd");let btn = document.querySelector("#btn");btn.onclick = function () {fetch("http://localhost:3000/login", {method: "POST",body: JSON.stringify({username: username.value,pwd: pwd.value,}),}).then((res) => res.json()).then((res) => {console.log(res);});};</script>
</html>

然后就是设置路由:routes/index.js,先写请求过程

const router = require('koa-router')()router.get('/', async (ctx, next) => {await ctx.render('index', {title: 'Hello Koa 2!'})
})router.get('/string', async (ctx, next) => {ctx.body = 'koa2 string'
})router.get('/json', async (ctx, next) => {ctx.body = {title: 'koa2 json'}
})router.post('/login',async (ctx, next) => {let bodyObj = JSON.parse(ctx.request.body)console.log(bodyObj)let userName = bodyObj.username;let pwd = bodyObj.pwd;if (userName == "zhangsan" && pwd == "123456") {ctx.body = {"status":"ok",}} else {ctx.body = {code: 400,msg: 'error'}}
})module.exports = router

下面就是生成token,下面是参考方法的网址

jsonwebtoken - npm

安装:npm install jsonwebtoken

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

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

相关文章

RabbitMQ自学笔记——延迟消息

延迟消息&#xff1a;生产者发送消息时指定一个时间&#xff0c;消费者不会立刻收到消息&#xff0c;而是在指定时间之后才收到消息。 1.死信交换机 初始设定消息的过期时间为30s&#xff0c;由于simple.queue队列没有消费者&#xff0c;当消息到达过期时间&#xff0c;没人消…

大数据Doris(六十八):基于Doris on ES的架构实现总结

文章目录 基于Doris on ES的架构实现总结 一、Mem Join架构遗留的核心问题 二、Doris

【JavaScript】面试手撕柯里化函数

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 引入柯里化定义实现快速使用柯里化的作用提高自由度bind函数 参考资料 引入 上周…

linux环境下安装运行环境JDK、Docker、Maven、MySQL、RabbitMQ、Redis、nacos、Elasticsearch

安装JDK 1、提前下载好jdk 官网&#xff1a;点击下载 2、将下载的文件放到自己喜欢的目录下 然后使用下面命令进行解压 tar -zxvf jdk-8u161-linux-x64.tar.gz3、配置环境变量 使用命令 vim /etc/profile在文件的最后插入 export JAVA_HOME/source/java/jdk1.8.0_161 #…

ASP.NET排课实验室排课,生成班级课表实验室课表教师课表(vb.net)-214-(代码+说明)

转载地址: http://www.3q2008.com/soft/search.asp?keyword214 要看成品演示 请联系客服发给您成品演示 课题&#xff1a;实验课排课系统 计算机 上机课 一周上5天课&#xff0c;周一到周五 一周上5天课&#xff0c;周一到周五 因为我排的是实验课&#xff0c;最好1&#xf…

基于vue实现bilibili网页

学校要求的实验设计,基于vue实现bilibili网页版,可实现以下功能 (1)基本的悬浮动画和页面渲染 (2)可实现登录和未登录的页面变化 (3)在登录页面的,实现密码判断,或者短信验证方式的倒数功能 (4)实现轮播图 (5)实现预览视频(GIF) (6)页面下拉到一定高度出现top栏以及右下角的返回…

一.java介绍和idea基础使用

java技术体系 Java技术体系说明Java SE(Java standard Edition):标准版Java技术的核心和基础Java EE(Java Enterprise Edition):企业版企业级应用开发的一套解决方案Java ME(Java Micro Edition):小型版针对移动设备应用的解决方案&#xff08;认可少&#xff0c;主要是安卓和…

idea Springboot 在线考试管理系统开发mysql数据库web结构java编程计算机网页

一、源码特点 springboot 在线考试管理系统是一套完善的完整信息系统&#xff0c;结合mvc框架和bootstrap完成本系统springboot spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有…

Redis中缓存和数据库双写数据不一致

先更新数据库&#xff0c;还是先更新缓存? 1.先更新数据库&#xff0c;再更新缓存 2.先更新缓存&#xff0c;再更新数据库 1.先更新数据库&#xff0c;再更新缓存 举个例子&#xff0c;比如【请求A】和【请求B】两个请求&#xff0c;同时更新【同一条】数据&#xff0c; 则…

(一)RabbitMQ实战——rabbitmq的核心组件及其工作原理介绍

前言 RabbitMQ是一个开源的消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;标准&#xff0c;提供可靠的消息传递机制。RabbitMQ可以用于在应用程序之间传递消息&#xff0c;实现不同应用系统之间的解耦和通信。它支持多种编程语言&#xff0c;…

Purple Pi OH鸿蒙开发板7天入门OpenHarmony开源鸿蒙教程【六】

今天我们来从OpenHarmony简介、环境搭建、创建第一个OpenHarmony项目等方面开始OpenHarmony应用开发的第一步。 一. OpenHarmony简介 OpenHarmony 是由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营的开源项目,目标是面向全场景、全连接、全智能…

智慧城市与数字经济:共创城市新价值

随着科技的快速发展&#xff0c;智慧城市与数字经济已成为推动城市现代化进程的重要引擎。它们不仅提升了城市治理的效率和公共服务水平&#xff0c;还为城市经济发展注入了新的活力。本文旨在探讨智慧城市与数字经济如何共同创造城市新价值&#xff0c;并分析其面临的挑战与发…