captcha.js 1.8 KB

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