checkUserRK.js 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. const _ = require('lodash');
  3. const whiteList = [
  4. '/util/crk', // 生成rk
  5. '/admin/login', // 管理登陆
  6. '/user/wxLogin', // 用户微信登陆
  7. '/user/login', // 用户密码登录
  8. '/user', // 创建用户
  9. '/pay/order', // 支付回调
  10. ];
  11. module.exports = options => {
  12. return async function checkuserrk(ctx, next) {
  13. const request = _.get(ctx, 'request');
  14. const method = _.get(request, 'method');
  15. const uri = _.get(request, 'url');
  16. // 本地或局域网请求,放过
  17. if (process.env.NODE_ENV === 'development') await next();
  18. // get方法放过
  19. else if (method === 'GET') await next();
  20. else {
  21. // 白名单中的路由放过: 查看是否以白名单中每一项为结尾,如果是的话,那就说明这个路由不需要检查requestKey
  22. const inWhiteList = whiteList.find(f => _.endsWith(uri, f));
  23. if (inWhiteList) await next();
  24. // 管理员的post放过
  25. else if (ctx.admin) await next();
  26. // 检查rk
  27. else {
  28. await ctx.service.util.rk.urk();
  29. await next();
  30. }
  31. }
  32. };
  33. };