5.x
This commit is contained in:
parent
ca038a4141
commit
7b9affde5c
|
@ -6,7 +6,7 @@
|
|||
"dependencies": {
|
||||
"@cool-midway/core": "^5.0.6",
|
||||
"@cool-midway/es": "^5.0.2",
|
||||
"@cool-midway/file": "^5.0.2",
|
||||
"@cool-midway/file": "^5.0.3",
|
||||
"@cool-midway/pay": "^5.0.0",
|
||||
"@cool-midway/rpc": "^5.0.1",
|
||||
"@cool-midway/task": "^5.0.1",
|
||||
|
@ -21,6 +21,7 @@
|
|||
"@midwayjs/static-file": "^3.2.0",
|
||||
"@midwayjs/validate": "^3.2.0",
|
||||
"@midwayjs/view-ejs": "^3.2.0",
|
||||
"cfork": "^1.8.0",
|
||||
"ipip-ipdb": "^0.6.0",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"mini-svg-data-uri": "^1.4.4",
|
||||
|
@ -45,7 +46,8 @@
|
|||
"node": ">=12.0.0"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "NODE_ENV=prod node ./bootstrap.js",
|
||||
"start_single": "NODE_ENV=prod node ./bootstrap.js",
|
||||
"start": "NODE_ENV=prod node ./server.js",
|
||||
"dev": "cross-env && cross-env NODE_ENV=local TS_NODE_TYPE_CHECK=false TS_NODE_TRANSPILE_ONLY=true midway-bin dev --ts",
|
||||
"test": "midway-bin test --ts",
|
||||
"cov": "midway-bin cov --ts",
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
'use strict';
|
||||
|
||||
const cfork = require('cfork');
|
||||
const util = require('util');
|
||||
const path = require('path');
|
||||
const os = require('os');
|
||||
|
||||
// 获取 cpu 核数
|
||||
const cpuNumbers = os.cpus().length;
|
||||
|
||||
cfork({
|
||||
exec: path.join(__dirname, './bootstrap.js'),
|
||||
count: cpuNumbers,
|
||||
})
|
||||
.on('fork', worker => {
|
||||
console.warn(
|
||||
'[%s] [worker:%d] new worker start',
|
||||
Date(),
|
||||
worker.process.pid
|
||||
);
|
||||
})
|
||||
.on('disconnect', worker => {
|
||||
console.warn(
|
||||
'[%s] [master:%s] wroker:%s disconnect, exitedAfterDisconnect: %s, state: %s.',
|
||||
Date(),
|
||||
process.pid,
|
||||
worker.process.pid,
|
||||
worker.exitedAfterDisconnect,
|
||||
worker.state
|
||||
);
|
||||
})
|
||||
.on('exit', (worker, code, signal) => {
|
||||
const exitCode = worker.process.exitCode;
|
||||
const err = new Error(
|
||||
util.format(
|
||||
'worker %s died (code: %s, signal: %s, exitedAfterDisconnect: %s, state: %s)',
|
||||
worker.process.pid,
|
||||
exitCode,
|
||||
signal,
|
||||
worker.exitedAfterDisconnect,
|
||||
worker.state
|
||||
)
|
||||
);
|
||||
err.name = 'WorkerDiedError';
|
||||
console.error(
|
||||
'[%s] [master:%s] wroker exit: %s',
|
||||
Date(),
|
||||
process.pid,
|
||||
err.stack
|
||||
);
|
||||
});
|
|
@ -8,6 +8,10 @@ export default {
|
|||
koa: {
|
||||
port: 8001,
|
||||
},
|
||||
// 文件上传
|
||||
upload: {
|
||||
fileSize: '200mb',
|
||||
},
|
||||
// 模板渲染
|
||||
view: {
|
||||
mapping: {
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import { App, Config, Middleware } from '@midwayjs/decorator';
|
||||
import { App, Config, Inject, Middleware } from '@midwayjs/decorator';
|
||||
import * as _ from 'lodash';
|
||||
import { RESCODE } from '@cool-midway/core';
|
||||
import * as jwt from 'jsonwebtoken';
|
||||
import { NextFunction, Context } from '@midwayjs/koa';
|
||||
import { IMiddleware, IMidwayApplication } from '@midwayjs/core';
|
||||
import { CacheManager } from '@midwayjs/cache';
|
||||
|
||||
/**
|
||||
* 权限校验
|
||||
|
@ -18,7 +19,8 @@ export class BaseAuthorityMiddleware
|
|||
@Config('module.base')
|
||||
jwtConfig;
|
||||
|
||||
coolCache;
|
||||
@Inject()
|
||||
cacheManager: CacheManager;
|
||||
|
||||
@App()
|
||||
app: IMidwayApplication;
|
||||
|
@ -60,10 +62,8 @@ export class BaseAuthorityMiddleware
|
|||
};
|
||||
return;
|
||||
}
|
||||
// 需要动态获得缓存
|
||||
this.coolCache = await ctx.requestContext.getAsync('cool:cache');
|
||||
// 判断密码版本是否正确
|
||||
const passwordV = await this.coolCache.get(
|
||||
const passwordV = await this.cacheManager.get(
|
||||
`admin:passwordVersion:${ctx.admin.userId}`
|
||||
);
|
||||
if (passwordV != ctx.admin.passwordVersion) {
|
||||
|
@ -74,7 +74,7 @@ export class BaseAuthorityMiddleware
|
|||
};
|
||||
return;
|
||||
}
|
||||
const rToken = await this.coolCache.get(
|
||||
const rToken = await this.cacheManager.get(
|
||||
`admin:token:${ctx.admin.userId}`
|
||||
);
|
||||
if (!rToken) {
|
||||
|
@ -88,11 +88,11 @@ export class BaseAuthorityMiddleware
|
|||
if (rToken !== token && this.jwtConfig.sso) {
|
||||
statusCode = 401;
|
||||
} else {
|
||||
let perms = await this.coolCache.get(
|
||||
let perms: string[] = await this.cacheManager.get(
|
||||
`admin:perms:${ctx.admin.userId}`
|
||||
);
|
||||
if (!_.isEmpty(perms)) {
|
||||
perms = JSON.parse(perms).map(e => {
|
||||
perms = perms.map(e => {
|
||||
return e.replace(/:/g, '/');
|
||||
});
|
||||
if (!perms.includes(url.split('?')[0].replace('/admin/', ''))) {
|
||||
|
|
|
@ -87,14 +87,8 @@ export class BaseSysLoginService extends BaseService {
|
|||
roleIds,
|
||||
user.username === 'admin'
|
||||
);
|
||||
await this.cacheManager.set(
|
||||
`admin:department:${user.id}`,
|
||||
JSON.stringify(departments)
|
||||
);
|
||||
await this.cacheManager.set(
|
||||
`admin:perms:${user.id}`,
|
||||
JSON.stringify(perms)
|
||||
);
|
||||
await this.cacheManager.set(`admin:department:${user.id}`, departments);
|
||||
await this.cacheManager.set(`admin:perms:${user.id}`, perms);
|
||||
await this.cacheManager.set(`admin:token:${user.id}`, result.token);
|
||||
await this.cacheManager.set(
|
||||
`admin:token:refresh:${user.id}`,
|
||||
|
|
|
@ -68,7 +68,7 @@ export class BaseSysPermsService extends BaseService {
|
|||
`admin:department:${userId}`
|
||||
);
|
||||
if (department) {
|
||||
return JSON.parse(department);
|
||||
return department;
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue