阅读本文前,需要提前阅读前置内容:
一、Midway 增删改查
二、Midway 增删改查的封装及工具类
三、Midway 接口安全认证
四、Midway 集成 Swagger 以及支持JWT bearer
五、Midway 中环境变量的使用
很多时候,后端接口需要登录后才能进行访问,甚至有的接口需要拥有相应的权限才能访问。
这里实现bearer
验证方式(bearerFormat 为 JWT)。
安装JWT组件
>npm i @midwayjs/jwt@3 --save
>npm i @types/jsonwebtoken --save-dev
安装完后package.json
文件中会多出如下配置
{
"dependencies": {
"@midwayjs/jwt": "^3.3.11"
},
"devDependencies": {
"@types/jsonwebtoken": "^8.5.8"
}
}
添加JWT配置
- 修改
src/config/config.default.ts
,添加如下内容;
// src/config/config.default.ts
jwt: {
secret: 'setscrew',
expiresIn: 60 * 60 * 24,
}
- 注册
JWT
组件;
// src/configuration.ts
import * as jwt from '@midwayjs/jwt';
@Configuration({
imports: [
jwt,
//...
],
})
export class ContainerLifeCycle {
//...
}
关于JWT的详细使用文档,见:http://www.midwayjs.org/docs/extensions/jwt
安装Redis组件
>npm i @midwayjs/redis@3 --save
>npm i @types/ioredis --save-dev
安装完后package.json
文件中会多出如下配置
{
"dependencies": {
"@midwayjs/redis": "^3.0.0"
},
"devDependencies": {
"@types/ioredis": "^4.28.7"
}
}
注册Redis组件
// src/configuration.ts
import * as redis from '@midwayjs/redis';
@Configuration({
imports: [
redis,
// ...
],
})
export class ContainerLifeCycle {
// ...
}
添加配置
修改src/config/config.default.ts
,添加如下内容:
添加Redis配置
// src/config/config.default.ts
redis: {
client: {
host: 127.0.0.1,
port: 6379,
db: 0,
},
}
关于Redis的详细使用文档,见:http://www.midwayjs.org/docs/extensions/redis
添加安全拦截配置
// src/config/config.default.ts
app: {
security: {
prefix: '/api', # 指定已/api开头的接口地址需要拦截
ignore: ['/api/login'], # 指定该接口地址,不需要拦截
},
}
添加接口安全拦截中间件
添加常量定义
// src/common/Constant.ts
export class Constant {
// 登陆验证时,缓存用户登陆状态KEY的前缀
static TOKEM = 'TOKEN';
}
添加用户访问上下文类
// src/common/UserContext.ts
/**
* 登陆后存储访问上下文的状态数据,同时也会存在redis缓存中
*/
export class UserContext {
userId: number;
username: string;
phoneNum: string;
constructor(userId: number, username: string, phoneNum: string