Authored by 王水玲

登录注册

... ... @@ -104,5 +104,7 @@ passport.use('qq', new QQStrategy({
passport.use('alipay', new AlipayStrategy({
partner: '2088701661478015',
key: 'kcxawi9bb07mzh0aq2wcirsf9znusobw',
callbackURL: `${siteUrl}/passport/login/alipay/callback`
}));
return_url: `${siteUrl}/passport/login/alipay/callback`
}), (profile, done) => {
done(null, profile);
});
... ...
... ... @@ -168,7 +168,7 @@ const bind = {
}).then(result => {
let refer = req.cookies.refer;
refer = refer ? decodeURI(refer) : helpers.urlFormat('/bind/success');
refer = refer ? decodeURI(refer) : helpers.urlFormat('/passport/bind/success');
if (result && result.code && result.code === 200 && result.data.uid) {
AuthHelper.syncUserSession(result.data.uid, req, res);
result.data.refer = refer;
... ... @@ -213,10 +213,14 @@ const bind = {
},
successPage: (req, res) => {
let refer = req.cookies.refer;
refer = refer ? decodeURI(refer) : helpers.urlFormat('/?go=1');
res.render('bind/success', {
isPassportPage: true,
successTip: '恭喜您,第三方账号关联手机号码成功!',
goUrl: helpers.urlFormat(),
goUrl: refer,
module: 'passport',
page: 'bind-success',
title: '绑定手机号'
... ...
... ... @@ -203,7 +203,6 @@ const qq = {
callback: (req, res, next) => {
if (req.session && req.session.authState && req.session.authState === req.query.state) {
passport.authenticate('qq', (err, user) => {
console.log(err, user);
if (err) {
log.error(`qq authenticate error : ${JSON.stringify(err)}`);
return res.redirect(loginPage);
... ...
... ... @@ -43,10 +43,13 @@ function paramsToRaw(params) {
function AlipayStrategy(options, verify) {
if (typeof options === 'function') {
verify = options;
options = {};
}
options = options || {};
passport.Strategy.call(this);
this.name = 'alipay';
this._verify = verify;
this._options = options;
}
util.inherits(AlipayStrategy, passport.Strategy);
... ... @@ -60,18 +63,17 @@ AlipayStrategy.prototype.authenticate = function(req, options) {
delete query.sign_type;
delete query.sign;
let signString = paramsToRaw(query) + options.key;
let signString = paramsToRaw(query) + this._options.key;
if (signType === 'MD5' && sign !== md5(signString)) {
this.error('alipay callback sign check fail');
this.fail('alipay callback sign check fail');
return;
}
if (req.query.is_success === 'T') {
let user = {
userId: req.query.user_id,
realName: req.query.realName,
realName: req.query.real_name,
email: req.query.email
};
... ... @@ -81,17 +83,21 @@ AlipayStrategy.prototype.authenticate = function(req, options) {
this.fail(req.error_code);
}
} else {
let params = _.assign(defaultOptions, options);
let params = _.assign(defaultOptions, this._options, options);
let signType = params.sign_type;
let key = params.key;
delete params.sign_type;
delete params.sign;
let signString = paramsToRaw(params) + options.key;
delete params.key;
let signString = paramsToRaw(params) + key;
if (signType === 'MD5') {
params.sign = md5(signString);
params.sign_type = 'MD5';
}
console.log(paramsToRaw(params))
this.redirect(ALIPAY_URL + '?' + paramsToRaw(params));
}
};
... ... @@ -99,3 +105,4 @@ AlipayStrategy.prototype.authenticate = function(req, options) {
exports = module.exports = AlipayStrategy;
exports.Strategy = AlipayStrategy;
... ...