Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
hello_uni-id-pages
提交
f3a5191a
H
hello_uni-id-pages
项目概览
DCloud
/
hello_uni-id-pages
通知
1054
Star
31
Fork
43
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
2
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello_uni-id-pages
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f3a5191a
编写于
8月 22, 2022
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加密码增强登录功能
上级
21d313ce
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
151 addition
and
50 deletion
+151
-50
uni_modules/uni-id-pages/common/password.js
uni_modules/uni-id-pages/common/password.js
+113
-0
uni_modules/uni-id-pages/config.js
uni_modules/uni-id-pages/config.js
+25
-13
uni_modules/uni-id-pages/package.json
uni_modules/uni-id-pages/package.json
+1
-1
uni_modules/uni-id-pages/pages/register/register.vue
uni_modules/uni-id-pages/pages/register/register.vue
+7
-1
uni_modules/uni-id-pages/pages/register/validator.js
uni_modules/uni-id-pages/pages/register/validator.js
+5
-35
未找到文件。
uni_modules/uni-id-pages/common/password.js
0 → 100644
浏览文件 @
f3a5191a
// 导入配置
import
config
from
'
@/uni_modules/uni-id-pages/config.js
'
const
passwordLength
=
config
.
password
.
length
const
passwordStrength
=
config
.
password
.
strength
let
minPasswordLength
=
6
let
maxPasswordLength
=
20
if
(
passwordLength
)
{
if
(
passwordLength
[
0
])
{
minPasswordLength
=
passwordLength
[
0
]
}
if
(
passwordLength
[
1
])
{
maxPasswordLength
=
passwordLength
[
1
]
}
}
// 密码强度表达式
const
passwordRules
=
{
// 密码必须包含大小写字母、数字和特殊符号
super
:
/^
(?=
.*
[
0-9
])(?=
.*
[
a-z
])(?=
.*
[
A-Z
])(?=
.*
[
~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/])[
0-9a-zA-Z~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]{8,16}
$/
,
// 密码必须包含字母、数字和特殊符号
strong
:
/^
(?=
.*
[
0-9
])(?=
.*
[
a-zA-Z
])(?=
.*
[
~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/])[
0-9a-zA-Z~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]{8,16}
$/
,
// 密码必须为字母、数字和特殊符号任意两种的组合
medium
:
/^
(?![
0-9
]
+$
)(?![
a-zA-Z
]
+$
)(?![
~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]
+$
)[
0-9a-zA-Z~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]{8,16}
$/
,
// 密码必须包含字母和数字
weak
:
/^
(?=
.*
[
0-9
])(?=
.*
[
a-zA-Z
])[
0-9a-zA-Z~!@#$%^&*_
\-
+=`|
\\
(){}[
\]
:;"'<>,.?
/]{6,16}
$/
}
const
ERROR
=
{
normal
:
{
noPwd
:
'
请输入密码
'
,
noRePwd
:
'
再次输入密码
'
,
rePwdErr
:
'
两次输入密码不一致
'
},
passwordStrengthError
:
{
superstrong
:
'
密码必须包含大小写字母、数字和特殊符号
'
,
strong
:
'
密码必须包含字母、数字和特殊符号
'
,
medium
:
'
密码必须为字母、数字和特殊符号任意两种的组合
'
,
weak
:
'
密码必须包含字母
'
},
passwordLengthError
:
{
normal
:
'
密码长度必须在
'
+
minPasswordLength
+
'
-
'
+
maxPasswordLength
+
'
位之间
'
,
minLimit
:
'
密码长度不得少于
'
+
minPasswordLength
+
'
位
'
,
maxLimit
:
'
密码长度不得超过
'
+
maxPasswordLength
+
'
位
'
}
}
function
validPwd
(
password
)
{
//强度校验
if
(
passwordStrength
&&
passwordRules
[
passwordStrength
])
{
if
(
!
new
RegExp
(
passwordRules
[
passwordStrength
]).
test
(
password
))
{
return
ERROR
.
passwordStrengthError
[
passwordStrength
]
}
}
//长度校验
if
(
passwordLength
)
{
if
(
passwordLength
[
0
]
&&
password
.
length
<
passwordLength
[
0
])
{
return
ERROR
.
passwordLengthError
.
minLimit
}
if
(
passwordLength
[
1
]
&&
password
.
length
>
passwordLength
[
1
])
{
return
ERROR
.
passwordLengthError
.
maxLimit
}
}
return
true
}
function
getPwdRules
(
pwdName
=
'
password
'
,
rePwdName
=
'
password2
'
)
{
const
rules
=
{}
rules
[
pwdName
]
=
{
rules
:
[{
required
:
true
,
errorMessage
:
ERROR
.
normal
.
noPwd
,
},
{
validateFunction
:
function
(
rule
,
value
,
data
,
callback
)
{
const
checkRes
=
validPwd
(
value
)
if
(
checkRes
!==
true
)
{
callback
(
checkRes
)
}
return
true
}
}
]
}
if
(
rePwdName
)
{
rules
[
rePwdName
]
=
{
rules
:
[{
required
:
true
,
errorMessage
:
ERROR
.
normal
.
noRePwd
,
},
{
validateFunction
:
function
(
rule
,
value
,
data
,
callback
)
{
if
(
value
!=
data
.
password
)
{
callback
(
ERROR
.
normal
.
rePwdErr
)
}
return
true
}
}
]
}
}
return
rules
}
export
default
{
ERROR
,
minPasswordLength
,
maxPasswordLength
,
validPwd
,
getPwdRules
}
uni_modules/uni-id-pages/config.js
浏览文件 @
f3a5191a
...
...
@@ -29,18 +29,30 @@ export default {
"
agreements
"
:
{
"
serviceUrl
"
:
"
https://xxx
"
,
//用户服务协议链接
"
privacyUrl
"
:
"
https://xxx
"
,
//隐私政策条款链接
// 哪些场景下显示,1.注册(包括登录并注册,如:微信登录、苹果登录、短信验证码登录)、2.登录(如:用户名密码登录)
"
scope
"
:
[
'
register
'
,
'
login
'
// 哪些场景下显示,1.注册(包括登录并注册,如:微信登录、苹果登录、短信验证码登录)、2.登录(如:用户名密码登录)
"
scope
"
:
[
'
register
'
,
'
login
'
]
},
// 提供各类服务接入(如微信登录服务)的应用id
"
appid
"
:{
"
weixin
"
:{
// 微信公众号的appid,来源:登录微信公众号(https://mp.weixin.qq.com)-> 设置与开发 -> 基本配置 -> 公众号开发信息 -> AppID
"
h5
"
:
"
xxxxxx
"
,
// 微信开放平台的appid,来源:登录微信开放平台(https://open.weixin.qq.com) -> 管理中心 -> 网站应用 -> 选择对应的应用名称,点击查看 -> AppID
"
web
"
:
"
xxxxxx
"
}
},
// 提供各类服务接入(如微信登录服务)的应用id
"
appid
"
:
{
"
weixin
"
:
{
// 微信公众号的appid,来源:登录微信公众号(https://mp.weixin.qq.com)-> 设置与开发 -> 基本配置 -> 公众号开发信息 -> AppID
"
h5
"
:
"
xxxxxx
"
,
// 微信开放平台的appid,来源:登录微信开放平台(https://open.weixin.qq.com) -> 管理中心 -> 网站应用 -> 选择对应的应用名称,点击查看 -> AppID
"
web
"
:
"
xxxxxx
"
}
},
/**
* 密码强度
* superstrong(超强:密码必须包含大小写字母、数字和特殊符号)
* strong(强: 密码必须包含字母、数字和特殊符号)
* medium (中:密码必须为字母、数字和特殊符号任意两种的组合)
* weak(弱:密码必须包含字母)
* 为空或false则不验证密码强度
*/
"
password
"
:
{
"
strength
"
:
"
strong
"
,
"
length
"
:
[
6
,
20
]
//密码长度,默认在6-20位之间
}
}
}
uni_modules/uni-id-pages/package.json
浏览文件 @
f3a5191a
...
...
@@ -47,7 +47,7 @@
"uni-load-more"
,
"uni-popup"
,
"uni-scss"
,
"uni-transition"
"uni-transition"
],
"encrypt"
:
[],
"platforms"
:
{
...
...
uni_modules/uni-id-pages/pages/register/register.vue
浏览文件 @
f3a5191a
...
...
@@ -12,7 +12,7 @@
</uni-forms-item>
<uni-forms-item
name=
"password"
v-model=
"formData.password"
required
>
<uni-easyinput
:inputBorder=
"false"
:focus=
"focusPassword"
@
blur=
"focusPassword = false"
class=
"input-box"
maxlength=
"20"
placeholder=
"请输入6-20位密码
"
type=
"password"
class=
"input-box"
maxlength=
"20"
:placeholder=
"'请输入' + passwordLength[0] + '-' + passwordLength[1] + '位密码'
"
type=
"password"
v-model=
"formData.password"
trim=
"both"
/>
</uni-forms-item>
<uni-forms-item
name=
"password2"
v-model=
"formData.password2"
required
>
...
...
@@ -33,6 +33,7 @@
<
script
>
import
rules
from
'
./validator.js
'
;
import
mixin
from
'
@/uni_modules/uni-id-pages/common/login-page.mixin.js
'
;
import
config
from
'
@/uni_modules/uni-id-pages/config.js
'
const
uniIdCo
=
uniCloud
.
importObject
(
"
uni-id-co
"
)
export
default
{
mixins
:
[
mixin
],
...
...
@@ -52,6 +53,11 @@
focusPassword2
:
false
}
},
computed
:{
passwordLength
(){
return
config
.
passwordLength
}
},
onReady
()
{
this
.
$refs
.
form
.
setRules
(
this
.
rules
)
},
...
...
uni_modules/uni-id-pages/pages/register/validator.js
浏览文件 @
f3a5191a
import
passwordMod
from
'
@/uni_modules/uni-id-pages/common/password.js
'
export
default
{
"
username
"
:
{
"
rules
"
:
[{
...
...
@@ -42,45 +43,14 @@ export default {
if
(
/^
\d
+$/
.
test
(
value
))
{
callback
(
'
昵称不能为纯数字
'
)
};
if
(
/
[\u
4E00-
\u
9FA5
\u
F900-
\u
FA2D
]{1,}
/
.
test
(
value
)){
callback
(
'
昵称不能包含中文
'
)
}
return
true
}
}
],
"
label
"
:
"
昵称
"
},
"
password
"
:
{
"
rules
"
:
[{
required
:
true
,
errorMessage
:
'
密码长度不少于6位
'
,
},
{
minLength
:
6
,
maxLength
:
20
,
errorMessage
:
'
密码长度在 {minLength} 到 {maxLength} 个字符
'
,
}
],
"
label
"
:
"
密码
"
},
"
password2
"
:
{
"
rules
"
:
[{
required
:
true
,
errorMessage
:
'
再次输入密码
'
,
},
{
minLength
:
6
,
maxLength
:
20
,
errorMessage
:
'
密码长度在 {minLength} 到 {maxLength} 个字符
'
,
},
{
validateFunction
:
function
(
rule
,
value
,
data
,
callback
)
{
// console.log(value);
if
(
value
!=
data
.
password
)
{
callback
(
'
两次输入密码不一致
'
)
};
return
true
}
}
],
"
label
"
:
"
确认密码
"
}
...
passwordMod
.
getPwdRules
()
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录