加密 加密

1:新建一个js文件

const { success, fail } = require("../toast");
const jwt = require("jsonwebtoken");
const key = "web";//密钥

module.exports = function (router) {
    //post添加                 ctx请求响应
    router.post("/login", async ctx => {
        const { name, pwd } = ctx.request.body; 
        if (name === "admin" && pwd === "123456") {
            //加密name   key密钥    expiresIn有效期60秒
            const token = jwt.sign({ name: "admin" }, key, { expiresIn:300 })
            //Bearer token的格式
            return success(ctx, "Bearer " + token);
        } else {
            return fail(ctx, "账号或密码不正确!");
        }
    }).get("/data", async ctx => { //token验证 data路由
        return success(ctx, {});
    })
}

2:app.js

//### 引入类
//这个地方定义的字母首写为大写,并且要与下面的 创建路由要一致
//引入内部方法或属性
//const{方法或属性名}=require('koa');
const Koa = require('koa'); //koa框架
const Router = require('koa-router'); //Koa-router 是 koa 的一个路由中间件,它可以将请求的URL和方法 匹配到对应的响应程序或页面。
const koaBody = require('koa-body'); //解析数据
const tagRouter = require("./routers/tag.router");
const userRouter = require("./routers/user.router");
const contentRouter = require("./routers/content.router");
const jwtRouter = require("./routers/jwttest.router");
const jwt = require("jsonwebtoken");
const key = "web"; //密钥
const { fail } = require("./toast")


//### 创建对象
const app = new Koa();//创建koa框架
app.use(koaBody({ //使用
    strict: false //关闭严格模式 获取参数 获取非post的参数
}));

app.use(async (ctx, next) => {
    const exp=[
        '/login',
        '/',
        'register'
    ];//不需要验证的地址
    if (exp.includes(ctx.url)) { //如果地址在exp中
       await next();//继续
        return;
    }

    const authorization = ctx.headers.authorization;
    if (!authorization) {
        return fail(ctx, "请添加token信息");
    }
    const token = authorization.split(' ')[1];//解析
    try {
        const user = jwt.verify(token, key); //解密
        if (user.name === "admin") {
            await next();
        } else {
            return fail(ctx, "权限不足");
        }

    } catch (error) {
        return fail(ctx, error);
    }

})


const router = new Router();//创建路由,支持传递参数==实例化
tagRouter(router);
userRouter(router);
contentRouter(router);
jwtRouter(router);



//### use后边都是中间件 use使用中间件 next下一步
// app.use(async (ctx,next)=>{
//     ctx.body='Hello Koa2';
//     next(); //中间件完成之后还可以找下一个地址
// });



//### get请求 请求本页面内容 在浏览器查看
//koa支持异步调用函数 async--形参 "/"请求跟路由(根目录)
// router.get("/",async (ctx)=>{
//     //url参数ctx.query
// console.log(ctx.url);//带参数的路由地址
// console.log(ctx.query);//获取json对象
// console.log(ctx.querystring); //获取字符串
// })



// //### post请求 在终端查看 获取test.http内容
// //postman测试后台接口
// router.post("/a",async ctx=>{
//     console.log(ctx.url);
//     console.log(ctx.request.body);
//     ctx.body="请求成功"
// })



// ###在服务启动前创建路由
// 调用router.routes()来组装匹配好的路由,返回一个合并好的中间件
// 调用router.allowedMethods()获得一个中间件,当发送了不符合的请求时,会返回 `405 Method Not Allowed` 或 `501 Not Implemented`
app.use(router.routes()).use(router.allowedMethods());



//localhost:3000 
//### listen监听 监听的是端口内的内容(也是打开端口地址)
app.listen(3000, () => {
    console.log("http://localhost:3000")
});

3:test:http

@url=http://localhost:3000
@json=Content-Type: application/json  
###向后台发送数据的格式必须为json字符串
@auth=Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiYWRtaW4iLCJpYXQiOjE2Mzg1MjE1OTIsImV4cCI6MTYzODUyMTg5Mn0.1AWZqH9UePTe33kkdQVT7kNVrG4fAuxsfEIL2jiVDlg

##############登录
POST {{url}}/login
{{json}}

{
    "name":"admin",
    "pwd":"123456"
}

###获取数据
Get {{url}}/data
{{auth}}

################tag
### 查询
GET {{url}}/tag
{{auth}}

### 添加
POST {{url}}/tag
{{json}}
# POST json 两行之间不能加空格
#json和{}中间必须空一行
#必须加双引号

{
   "text":"张三"
}

### 删除
DELETE {{url}}/tag
{{json}}

{
    "_id": "61a8869a2c1dabf00c737410"
}


#######################content
###查询内容
get {{url}}/content
{{auth}}

###添加内容
POST {{url}}/content
{{json}}

{
    "title":"titletitle",
    "content":"contentcontentcontentcontent"
}

###修改内容
PUT {{url}}/content?_id=61a88229908b15dcf22b9586
{{json}}

{
    "top": true
}

### 删除
DELETE {{url}}/content
{{json}}

{
    "_id": "61a8872e2c1dabf00c737417"
}

####################user
###查询内容
get {{url}}/user
{{auth}}

###添加内容
POST {{url}}/user
{{json}}

{
    "username":"杜涵雪",
   "password":"nky123789",
   "email":"1789217140@qq.com",
   "group":"限制会员"
}

###修改内容
PUT {{url}}/user?_id=61a8875d2c1dabf00c737420
{{json}}

{
    "username": "张凯月"
}

### 删除
DELETE {{url}}/user
{{json}}

{
    "_id": "61a8875d2c1dabf00c737420"
}

 

posted @ 2021-12-03 17:26  熊熊日记  阅读(61)  评论(0)    收藏  举报