captcha.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. 'use strict';
  2. /**
  3. * 验证码
  4. *
  5. * @author CaiAoLin
  6. * @date 2017/10/13
  7. * @version
  8. */
  9. const Geetest = require('gt3-sdk');
  10. class Captcha {
  11. /**
  12. * 构造函数
  13. *
  14. * @return {void}
  15. */
  16. constructor() {
  17. this.captcha = new Geetest({
  18. geetest_id: '697bb3d9c16ab6d016c375f0a65e805b',
  19. geetest_key: '1bde862a0898a7c72ffb82e95a0816c7',
  20. });
  21. }
  22. /**
  23. * 验证码注册
  24. *
  25. * @return {String} - 返回生成所需的json数据
  26. */
  27. async register(request) {
  28. let response = {
  29. success: 0,
  30. };
  31. try {
  32. const data = await this.captcha.register(null);
  33. request.session.fallback = !data.success;
  34. response = data;
  35. } catch (error) {
  36. response.success = 0;
  37. response.message = error;
  38. JSON.stringify(response);
  39. }
  40. return response;
  41. }
  42. /**
  43. * 验证码校验
  44. *
  45. * @return {Boolean} - 返回是否校验成功
  46. */
  47. async validate(request) {
  48. let result = false;
  49. const challenge = request.body.geetest_challenge;
  50. const validate = request.body.geetest_validate;
  51. const seccode = request.body.geetest_seccode;
  52. try {
  53. if (challenge === '' || validate === '' || seccode === '') {
  54. throw '参数错误';
  55. }
  56. const fallback = request.session.fallback;
  57. result = await this.captcha.validate(fallback, {
  58. geetest_challenge: challenge,
  59. geetest_validate: validate,
  60. geetest_seccode: seccode,
  61. });
  62. } catch (error) {
  63. result = false;
  64. }
  65. return result;
  66. }
  67. }
  68. module.exports = Captcha;