Showing
3 changed files
with
30 additions
and
20 deletions
@@ -7,6 +7,8 @@ | @@ -7,6 +7,8 @@ | ||
7 | const captchaService = require('../models/captcha-service'); | 7 | const captchaService = require('../models/captcha-service'); |
8 | const helpers = global.yoho.helpers; | 8 | const helpers = global.yoho.helpers; |
9 | const CAPTCHA = 'yoho4946abcdef#$%&!@'; | 9 | const CAPTCHA = 'yoho4946abcdef#$%&!@'; |
10 | +const request = require('request'); | ||
11 | +const uuid = require('uuid'); | ||
10 | 12 | ||
11 | // 对比函数 | 13 | // 对比函数 |
12 | const _mustEqual = (req) => { | 14 | const _mustEqual = (req) => { |
@@ -79,6 +81,22 @@ const generate = (req, res, next) => { | @@ -79,6 +81,22 @@ const generate = (req, res, next) => { | ||
79 | }).catch(next); | 81 | }).catch(next); |
80 | }; | 82 | }; |
81 | 83 | ||
84 | +// 七牛验证码 | ||
85 | +const generateQiniu = (req, res, next) => { | ||
86 | + captchaService.generateCaptcha().then((result) => { | ||
87 | + req.session.captcha = result.data.text; | ||
88 | + req.session.captchaCount = 0; | ||
89 | + | ||
90 | + let imageUrl = result.data.images + `/watermark/2/text/${uuid.v4()}/fontsize/120/dissolve/10`; | ||
91 | + | ||
92 | + res.type('png'); | ||
93 | + if (result.code === 200) { | ||
94 | + request(imageUrl).pipe(res); | ||
95 | + } | ||
96 | + | ||
97 | + }).catch(next); | ||
98 | +}; | ||
99 | + | ||
82 | // 端到端检查 | 100 | // 端到端检查 |
83 | const checkAPI = (req, res) => { | 101 | const checkAPI = (req, res) => { |
84 | let count = req.session.captchaCount; | 102 | let count = req.session.captchaCount; |
@@ -110,5 +128,6 @@ module.exports = { | @@ -110,5 +128,6 @@ module.exports = { | ||
110 | requiredAPI, | 128 | requiredAPI, |
111 | requiredPage, | 129 | requiredPage, |
112 | generate, | 130 | generate, |
113 | - checkAPI | 131 | + checkAPI, |
132 | + generateQiniu | ||
114 | }; | 133 | }; |
@@ -201,5 +201,6 @@ router.get('/passport/back/resetSuccess', | @@ -201,5 +201,6 @@ router.get('/passport/back/resetSuccess', | ||
201 | 201 | ||
202 | router.get('/passport/imagesNode', captcha.generate); | 202 | router.get('/passport/imagesNode', captcha.generate); |
203 | router.post('/passport/captcha/img', captcha.checkAPI); | 203 | router.post('/passport/captcha/img', captcha.checkAPI); |
204 | +router.get('/passport/images', captcha.generateQiniu); | ||
204 | 205 | ||
205 | module.exports = router; | 206 | module.exports = router; |
@@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
5 | var Captcha = function(container, options) { | 5 | var Captcha = function(container, options) { |
6 | var optionDefault = { | 6 | var optionDefault = { |
7 | template: require('hbs/common/captcha.hbs'), | 7 | template: require('hbs/common/captcha.hbs'), |
8 | - refreshURI: '/passport/imagesNode', | 8 | + refreshURI: '/passport/images', |
9 | checkURI: '/passport/captcha/img' | 9 | checkURI: '/passport/captcha/img' |
10 | }; | 10 | }; |
11 | 11 | ||
@@ -92,7 +92,7 @@ Captcha.prototype = { | @@ -92,7 +92,7 @@ Captcha.prototype = { | ||
92 | */ | 92 | */ |
93 | refresh: function() { | 93 | refresh: function() { |
94 | var self = this; | 94 | var self = this; |
95 | - var uri = this.refreshURI; | 95 | + var uri = this.refreshURI + '?t=' + $.now(); |
96 | 96 | ||
97 | if (self.running) { | 97 | if (self.running) { |
98 | return $.Deferred().reject().promise(); // eslint-disable-line | 98 | return $.Deferred().reject().promise(); // eslint-disable-line |
@@ -100,25 +100,15 @@ Captcha.prototype = { | @@ -100,25 +100,15 @@ Captcha.prototype = { | ||
100 | 100 | ||
101 | self.running = true; | 101 | self.running = true; |
102 | 102 | ||
103 | - return $.get(uri) | ||
104 | - .done(function(result) { | ||
105 | - if (result.code !== 200) { | ||
106 | - return self.showTip(); | ||
107 | - } | ||
108 | - | ||
109 | - var src = result.data.images; // eslint-disable-line | 103 | + self.render({ |
104 | + images: uri | ||
105 | + }); | ||
110 | 106 | ||
111 | - self.render({ | ||
112 | - images: src | ||
113 | - }); | 107 | + self.hideTip(); |
108 | + self.refreshCb && self.refreshCb(); | ||
109 | + self.running = false; | ||
114 | 110 | ||
115 | - self.hideTip(); | ||
116 | - | ||
117 | - self.refreshCb && self.refreshCb(); | ||
118 | - }) | ||
119 | - .always(function() { | ||
120 | - self.running = false; | ||
121 | - }); | 111 | + return $.Deferred().resolve().promise(); // eslint-disable-line |
122 | }, | 112 | }, |
123 | 113 | ||
124 | onRefresh: function(cb) { | 114 | onRefresh: function(cb) { |
-
Please register or login to post a comment