【修复】ShopWind电商系统移动端密码含特殊字符登录失败

admin 发布于 BUG提交 2023-01-05 18:38:10

ShopWind电商系统移动端支持账号密码登录、手机验证码登录、微信支付宝等第三方登录。其中用账号密码登录时,如果密码中含有特殊字符显示密码错误,无法登录。经排查,原因在于在使用 js 解决URL传参加号(+)被自动转换成空格导致的问题

attachmentId-412

修复方案:

1、打开shopwind移动端/common/server.js文件,function getEncryptionString(obj)函数,将代码

/**
 * 获取待加密的字符串
 * @var bool pssl 业务参数是否参与加密(安全性更高,但也更消耗性能)
 */
function getEncryptionString(obj) {

	let string = ''

	// 业务参数不参与加密
	if (!obj.pssl) {
		for (var key in obj) {
			if (key != 'params') {
				obj[key] = encodeURIComponent(obj[key])
				string += key + "=" + character(obj[key]) + "&"
			}
		}
	}
	// 业务参数也参与加密,可能还要考虑剔除文件、字节流数据
	else {
		for (var key in obj) {
			obj[key] = encodeURIComponent(obj[key])
			string += key + "=" + character(obj[key]) + "&"
		}
	}

	return string ? string.substr(0, string.length - 1) : ''
}

修改为:

/**
 * 获取待加密的字符串
 * @var bool pssl 业务参数是否参与加密(安全性更高,但也更消耗性能)
 * @desc 业务参数参与加密,需要考虑剔除文件、字节流数据
 */
function getEncryptionString(obj) {

	let string = ''
	for (var key in obj) {
		obj[key] = encodeURIComponent(obj[key])

		// 业务参数不参与加密
		if (!obj.pssl && key == 'params') {
			continue
		}
		string += key + "=" + character(obj[key]) + "&"
	}

	return string ? string.substr(0, string.length - 1) : ''
}
最后编辑于 2023-04-07 07:25:59
1 1080

回复(1)

沙发
支持!
发布于 2023-05-31 09:41:22
回复
Re :

admin 这家伙什么都没留下

  • 回答

    97
  • 发布

    86
  • 经验

    6430

内容精选

联系我们

  • 微信官网

    关注公众号

    系统更新,推送提醒
  • 开发交流群

    技术交流Q群

    安装使用,开发交流

垂询热线:18978189162