《Office 2013快速入门指南》简体中文版下载(暂未上线)(office是什么意思)
593
2022-05-30
上个文章我们讲了创建实例,在讲基础模块之前我们先讲如何拦截用户的请求
我们的视频教程(免费)链接为https://static-b5208986-2c02-437e-9a27-cfeba1779ced.bspapp.com/
由于考研所以可能文章比较短也是为了拆分每一步操作
为什么拦截
我们要知道用户的某些请求是不需要权限的比如浏览商品,不登录也可以浏览,但是用户在购买的时候就需要确认用户身份,所以我们要拦截用户的某些请求。
比如登录前进行加购或购买操作肯定会被拦截并告知需要登录,这一类需要登录却没有登录的我们做一个拦截
登录后登录失效的我们也要拦截,所以进行某些登录后操作(需要鉴权)的发现登录失效的做一个拦截
用户的请求在后台没有对应请求,比如说我们的某个应用不存在A操作,那么用户通过某些途径进行A操作,比如说post/get某些不存在请求,这时我们告知非法请求。
如何拦截
很明显 我们不拦截 登录 注册 等某些不需要权限/登录才能操作的请求 我们给予放行
这时我们可以构建一个拦截字段数组 当字段存在于数组中我们就放行,否则就拦截
完整代码(下面分布讲解)
'use strict'; const uniIDs = require('uni-id') exports.main = async (event, context) => { let res = {}; //响应 let params = event.params ?event.params:{}; //接收请求数据 const uniID = uniIDs.createInstance({ context: context }) const noNeedTokens = ['login', 'register', 'logout']; if (noNeedTokens.indexOf(event.action) == -1) { if (!event.uniIdToken) { res = { code: 403, message: "未携带token" } return res; } else { let check_user = await uniID.checkToken(event.uniIdToken, {}); if (check_user.code === 0) { params.uid = check_user.uid; } else { res = check_user; return res; } } } switch (event.action) { ...进行对应操作 default: { res = { code: 402, message: "请求非法" } break; } } //返回数据给客户端 return res; };
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
37
38
39
40
41
42
43
构建放行数组
这里我们放行 登录注册退出操作
const noNeedTokens = ['login', 'register', 'logout'];
1
放行不需要登录的操作
注意如上 这里的event
action是判断操作类型(比如登录退出)
这里如果在放行数组我们就让他跳过登录失效检测直接操作
const noNeedTokens = ['login', 'register', 'logout']; if (noNeedTokens.indexOf(event.action) == -1) { 检测登录是否失效或者是否登录 } switch (event.action) { ...进行对应操作 }
1
2
3
4
5
6
7
拦截未登录以及登录失效
uniIdToken是登录后得到的令牌也就是token
uniID.checkToken是uni-id的鉴权操作用来检测 见文档https://uniapp.dcloud.io/uniCloud/uni-id?id=checktoken
步骤如下
如果不存在uniIdToken 那么判定为未登录
设置响应结果res 并且直接return res;跳过后续步骤
如果存在则判断token是否失效
调用uniID.checkToken来判断(这里也可以判断权限)
如果未过期我们就获取uniID.checkToken的返回结果中的uid(用户id)
以便于后续操作使用
否则就将uniID.checkToken未通过的原因作为响应结果返回
const noNeedTokens = ['login', 'register', 'logout']; if (noNeedTokens.indexOf(event.action) == -1) { if (!event.uniIdToken) { res = { code: 403, message: "未携带token" } return res; } else { let check_user = await uniID.checkToken(event.uniIdToken, {}); if (check_user.code === 0) { params.uid = check_user.uid; } else { res = check_user; return res; } } } switch (event.action) { ...进行对应操作 default: { res = { code: 402, message: "请求非法" } break; } }
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
拦截非法请求
看switch case 如果找不到响应操作 就告知为非法请求
const noNeedTokens = ['login', 'register', 'logout']; if (noNeedTokens.indexOf(event.action) == -1) { if (!event.uniIdToken) { res = { code: 403, message: "未携带token" } return res; } else { let check_user = await uniID.checkToken(event.uniIdToken, {}); if (check_user.code === 0) { params.uid = check_user.uid; } else { res = check_user; return res; } } } switch (event.action) { ...进行对应操作 default: { res = { code: 402, message: "请求非法" } break; } }
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
结语
到此拦截请求结束
数据结构
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。