interceptor.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. 'use strict';
  2. module.exports = () => {
  3. return async function interceptor(ctx, next) {
  4. let sessionId = '';
  5. if (ctx.query && ctx.query.sessionId) {
  6. sessionId = ctx.query.sessionId;
  7. }
  8. if (ctx.request.body && ctx.request.body.sessionId) {
  9. sessionId = ctx.request.body.sessionId;
  10. }
  11. if (ctx.get('sessionId')) {
  12. sessionId = ctx.get('sessionId');
  13. }
  14. let openId = '';
  15. if (ctx.query && ctx.query.openId) {
  16. openId = ctx.query.openId;
  17. }
  18. if (ctx.request.body && ctx.request.body.openId) {
  19. openId = ctx.request.body.openId;
  20. }
  21. if (ctx.get('openId')) {
  22. openId = ctx.get('openId');
  23. }
  24. let appletsId = '';
  25. if (ctx.query && ctx.query.appletsId) {
  26. appletsId = ctx.query.appletsId;
  27. }
  28. if (ctx.request.body && ctx.request.body.appletsId) {
  29. appletsId = ctx.request.body.appletsId;
  30. }
  31. if (ctx.get('appletsId')) {
  32. appletsId = ctx.get('appletsId');
  33. }
  34. ctx.sessionId = sessionId;
  35. ctx.openId = openId;
  36. ctx.appletsId = appletsId;
  37. console.log('拦截器appletsId======================' + appletsId)
  38. if (sessionId) {
  39. const user = await ctx.app.redis.get(sessionId);
  40. if (user) {
  41. const newUser = await ctx.service.sysUserService.one(JSON.parse(user)._id, ctx.getUserPop());
  42. if (newUser) {
  43. ctx.user = newUser;
  44. await ctx.app.redis.expire(sessionId, ctx.app.config.sessionTimeOut);
  45. // Redis Expire 命令用于设置 key 的过期时间,key 过期后将不再可用
  46. await next();
  47. } else {
  48. ctx.error('登录失效', 2);
  49. }
  50. } else {
  51. ctx.error('登录失效', 2);
  52. }
  53. } else {
  54. if (openId) {
  55. const user = await ctx.service.sysUserService.oneData({ openId }, ctx.getUserPop());
  56. if (user) {
  57. ctx.user = user;
  58. await next();
  59. } else {
  60. ctx.error('当前openId没有绑定用户', 2);
  61. }
  62. } else {
  63. // ctx.error('登录失效', 2);
  64. if (appletsId) {
  65. const user = await ctx.service.sysUserService.oneData({ appletsId }, ctx.getUserPop());
  66. if (user) {
  67. ctx.user = user;
  68. await next();
  69. } else {
  70. ctx.error('当前appletsId没有绑定用户', 2);
  71. }
  72. } else {
  73. ctx.error('登录失效', 2);
  74. }
  75. }
  76. }
  77. };
  78. };