checkSession.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * @Description: 检查用户是否已经登陆
  3. * @Autor: kindring
  4. * @Date: 2021-12-22 16:24:37
  5. * @LastEditors: kindring
  6. * @LastEditTime: 2022-01-26 14:07:50
  7. * @LastDescript:
  8. */
  9. const progressField = require('../map/progressField');
  10. const {notLogin} = require('../tools/result');
  11. const log = require('../logger').logger('checkLogin', 'info');
  12. /**
  13. * 检查是否登录
  14. * @param sessionField
  15. * @param {'json'|'view'} type 返回的数据类型
  16. * @returns
  17. */
  18. function checkLogin(
  19. sessionField = progressField.session_hfy,
  20. type = 'json') {
  21. return function(req, res, next) {
  22. let session = req.session[sessionField]
  23. if (!session) {
  24. log.warn(`未登陆,请求接口,该接口验证类型${type}`)
  25. // 类型
  26. let resAction;
  27. switch (type) {
  28. case 'view':
  29. resAction = {
  30. action: 'redirect',
  31. params: [302, progressField.loginUrl[sessionField]]
  32. }
  33. break;
  34. case 'json':
  35. default:
  36. return notLogin(res, '请登录后在进行尝试');
  37. break;
  38. }
  39. return res[resAction.action](...resAction.params)
  40. }
  41. req.session._garbage = Date();
  42. req.session.touch();
  43. next();
  44. }
  45. }
  46. module.exports = checkLogin;