123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 'use strict';
- /**
- * 验证码
- *
- * @author CaiAoLin
- * @date 2017/10/13
- * @version
- */
- const Geetest = require('gt3-sdk');
- class Captcha {
- /**
- * 构造函数
- *
- * @param {Object} app - egg中的全局变量app(用于获取配置)
- * @return {void}
- */
- constructor(app) {
- this.captcha = new Geetest({
- geetest_id: app.config.geetest.id,
- geetest_key: app.config.geetest.key,
- });
- }
- /**
- * 验证码注册
- *
- * @param {Object} ctx - egg中的全局变量context
- * @return {String} - 返回生成所需的json数据
- */
- async register(ctx) {
- let response = {
- success: 0,
- };
- try {
- const data = await this.captcha.register(null);
- ctx.session.fallback = !data.success;
- response = data;
- } catch (error) {
- response.success = 0;
- response.message = error;
- JSON.stringify(response);
- }
- return response;
- }
- /**
- * 验证码校验
- *
- * @param {Object} ctx - egg中的全局变量context
- * @return {Boolean} - 返回是否校验成功
- */
- async validate(ctx) {
- let result = false;
- const challenge = ctx.request.body.geetest_challenge;
- const validate = ctx.request.body.geetest_validate;
- const seccode = ctx.request.body.geetest_seccode;
- try {
- if (challenge === '' || validate === '' || seccode === '') {
- throw '参数错误';
- }
- const fallback = ctx.session.fallback;
- result = await this.captcha.validate(fallback, {
- geetest_challenge: challenge,
- geetest_validate: validate,
- geetest_seccode: seccode,
- });
- } catch (error) {
- result = false;
- }
- return result;
- }
- }
- module.exports = Captcha;
|