diff --git a/api/app/lib/controllers/auth/index.js b/api/app/lib/controllers/auth/index.js index bd67e02..555caf8 100644 --- a/api/app/lib/controllers/auth/index.js +++ b/api/app/lib/controllers/auth/index.js @@ -33,6 +33,8 @@ async function login (ctx, next) { ) { throw '当前账号已禁用' } + emisLoginRes.authorized = true + emisLoginRes.expired = moment().add(1, 'day') emisLoginRes.pomsUserInfo = pomsRegisterRes.dataValues let userUpdateData = { @@ -60,13 +62,17 @@ async function login (ctx, next) { ctx.fs.logger.error(`IP GET, error: ${error}`); } - await models.User.update(userUpdateData, { where: { id: emisLoginRes.id } }) + await ctx.redis.hmset(emisLoginRes.token, { + expired: moment().add(1, 'day'), + userInfo:JSON.stringify(emisLoginRes) + }); + ctx.status = 200; ctx.body = emisLoginRes; } @@ -95,6 +101,7 @@ async function logout (ctx) { await ctx.app.fs.emisRequest.put('logout', { data: params }) + await ctx.redisTools.hdelall(token); ctx.status = 204; } catch (error) { diff --git a/api/app/lib/middlewares/authenticator.js b/api/app/lib/middlewares/authenticator.js index 1bc7416..52e6a09 100644 --- a/api/app/lib/middlewares/authenticator.js +++ b/api/app/lib/middlewares/authenticator.js @@ -72,24 +72,34 @@ let authorizeToken = async function (ctx, token) { if (token && tokenFormatRegexp.test(token)) { try { console.log(`DurationCalc: auth 1 用时 ${moment().diff(startTime, 'milliseconds')}`); - const authorizeRes = await ctx.app.fs.emisRequest.get('authorize', { - query: { token } - }) + + const expired = await ctx.redis.hget(token, 'expired'); + + // const authorizeRes = await ctx.app.fs.emisRequest.get('authorize', { + // query: { token } + // }) + // const { userInfo, expired } = authorizeRes; + console.log(`DurationCalc: auth 2 用时 ${moment().diff(startTime, 'milliseconds')}`); - const { userInfo, expired } = authorizeRes; + + // TODO 从项企 clickhouse 数据库中查 token 并更新 if (expired && moment().valueOf() <= moment(expired).valueOf()) { - const pomsUser = await ctx.app.fs.dc.models.User.findOne({ - where: { - pepUserId: userInfo.id - } - }) || {} + const userInfo = JSON.parse(await ctx.redis.hmget(token, 'userInfo')); + const { pomsUserInfo: pomsUser } = userInfo + + // const pomsUser = await ctx.app.fs.dc.models.User.findOne({ + // where: { + // pepUserId: userInfo.id + // } + // }) || {} + console.log(`DurationCalc: auth 3 用时 ${moment().diff(startTime, 'milliseconds')}`); rslt = { 'authorized': userInfo.authorized, 'resources': (userInfo || {}).resources || [], }; ctx.fs.api.userId = pomsUser.id; - ctx.fs.api.userInfo = pomsUser.dataValues; + ctx.fs.api.userInfo = pomsUser; ctx.fs.api.pepUserId = userInfo.id; ctx.fs.api.pepUserInfo = userInfo; ctx.fs.api.token = token;