获取短信验证码 需求文档(产品) 总需求:点击获取验证码按钮,向服务端发送请求, 调用服务器端短信接口, 服务器端根据传参, 调用第三方短信接口, 给手机发送验证码 需求1:格式校验 (1) 手机号码不能为空...如果为空提示"手机号不能为空" (2) 手机号码格式必须正确, 提示"请输入正确的手机号码" 需求2:点击发送时,按钮显示为"发送中",并且不能重复提交请求 需求3:根据不同的响应结果,进行响应...,否则提示"请输入用户名" 1.2 密码不能为空,否则提示"请输入密码" 1.3 确认密码必须与密码一直,否则提示"确认密码与密码不一致" 1.4 手机号码不能为空,否则提示"请输入手机号码..."; 1.5 手机号码格式必须正确,否则提示"手机号格式错误" 1.6 短信验证码必须是4位的数字,否则提示"验证码格式错误" 需求2:点击注册按钮时,按钮显示为"注册中....100:成功 101:用户存在 102:验证码错误 msg 当前系统返回给前端提示 name: 注册的用户名 模板引擎 是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档
流程说明: 前端将用户名、密码发送到服务器,服务器进行常规的判断,判断用户名、密码长度是否满足,用户名是否重复等条件,条件不通过直接返回对应错误码给到前端,这里密码字段,为了防止传输过程中被截胡,建议加密再上传...校验通过后,就将用户名密码写入数据库,并进行后面积分发放等操作,这里不展开。...手机接收到手机短信后,那么就在界面填写验证码发送服务端,服务端收到验证码后就会在redis里面查询到这个手机号对应的验证码,失败就返回错误码。 成功后就进行登录操作。...说明: 客户端自己调起登录的界面,进行输入用户名、密码,这里的是第三方的用户名,密码,登录成功后,会返回access_token openid expire_in,这过程会使用到oauth2.0,不过在...校验不通过则返回对应错误码。 校验通过后就会判断本地是否有这个login_type和openid是否存在,不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据,并且返回code值。
流程图: 流程说明: 前端将用户名、密码发送到服务器,服务器进行常规的判断,判断用户名、密码长度是否满足,用户名是否重复等条件,条件不通过直接返回对应错误码给到前端,这里密码字段,为了防止传输过程中被截胡...校验通过后,就将用户名密码写入数据库,并进行后面积分发放等操作,这里不展开。...手机接收到手机短信后,那么就在界面填写验证码发送服务端,服务端收到验证码后就会在redis里面查询到这个手机号对应的验证码,失败就返回错误码。 成功后就进行登录操作。...openid expire_in,这过程会使用到oauth2.0,不过在sdk里面进行内置回调获取了,后面我们会说明我们自身实现的oauth2.0 客户端拿到access_token、openid、login_type...校验不通过则返回对应错误码 校验通过后就会判断本地是否有这个login_type和openid是否存在,不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据,并且返回code值 如果已经存在,
流程图如下: 流程说明: 前端将用户名、密码发送到服务器,服务器进行常规的判断,判断用户名、密码长度是否满足,用户名是否重复等条件,条件不通过直接返回对应错误码给到前端,这里密码字段,为了防止传输过程中被截胡...校验通过后,就将用户名密码写入数据库,并进行后面积分发放等操作,这里不展开。...手机接收到手机短信后,那么就在界面填写验证码发送服务端,服务端收到验证码后就会在redis里面查询到这个手机号对应的验证码,失败就返回错误码。 成功后就进行登录操作。...openid expire_in,这过程会使用到oauth2.0,不过在sdk里面进行内置回调获取了,后面我们会说明我们自身实现的oauth2.0 客户端拿到access_token、openid、login_type...校验不通过则返回对应错误码 校验通过后就会判断本地是否有这个login_type和openid是否存在,不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据,并且返回code值 如果已经存在,
流程说明: 前端将用户名、密码发送到服务器,服务器进行常规的判断,判断用户名、密码长度是否满足,用户名是否重复等条件,条件不通过直接返回对应错误码给到前端,这里密码字段,为了防止传输过程中被截胡,建议加密再上传...校验通过后,就将用户名密码写入数据库,并进行后面积分发放等操作,这里不展开。...手机接收到手机短信后,那么就在界面填写验证码发送服务端,服务端收到验证码后就会在redis里面查询到这个手机号对应的验证码,失败就返回错误码。 成功后就进行登录操作。...实现思路: 客户端自己调起登录的界面,进行输入用户名、密码,这里的是第三方的用户名,密码,登录成功后,会返回access_token openid expire_in,这过程会使用到oauth2.0,不过在...校验不通过则返回对应错误码 校验通过后就会判断本地是否有这个login_type和openid是否存在,不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据,并且返回code值 如果已经存在,
前端将用户名、密码发送到服务器,服务器进行常规的判断,判断用户名、密码长度是否满足,用户名是否重复等条件,条件不通过直接返回对应错误码给到前端,这里密码字段,为了防止传输过程中被截胡,建议加密再上传,我们的传输密码默认都是会进行一个...校验通过后,就将用户名密码写入数据库,并进行后面积分发放等操作,这里不展开。 3....手机接收到手机短信后,那么就在界面填写验证码发送服务端,服务端收到验证码后就会在redis里面查询到这个手机号对应的验证码,失败就返回错误码。 3. 成功后就进行登录操作。...客户端自己调起登录的界面,进行输入用户名、密码,这里的是第三方的用户名,密码,登录成功后,会返回access_token openid expire_in,这过程会使用到oauth2.0,不过在sdk里面进行内置回调获取了...校验不通过则返回对应错误码 1. 校验通过后就会判断本地是否有这个login_type和openid是否存在,不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据,并且返回code值 2.
流程说明: •前端将用户名、密码发送到服务器,服务器进行常规的判断,判断用户名、密码长度是否满足,用户名是否重复等条件,条件不通过直接返回对应错误码给到前端,这里密码字段,为了防止传输过程中被截胡,建议加密再上传...•校验通过后,就将用户名密码写入数据库,并进行后面积分发放等操作,这里不展开。...•手机接收到手机短信后,那么就在界面填写验证码发送服务端,服务端收到验证码后就会在redis里面查询到这个手机号对应的验证码,失败就返回错误码。•成功后就进行登录操作。...说明: •客户端自己调起登录的界面,进行输入用户名、密码,这里的是第三方的用户名,密码,登录成功后,会返回access_token openid expire_in,这过程会使用到oauth2.0,不过在...校验不通过则返回对应错误码•校验通过后就会判断本地是否有这个login_type和openid是否存在,不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据,并且返回code值•如果已经存在,
如上图所示,详细的流程说明如下: 1)前端将用户名、密码发送到服务器,服务器进行常规的判断,判断用户名、密码长度是否满足,用户名是否重复等条件,条件不通过直接返回对应错误码给到前端,这里密码字段,为了防止传输过程中被截胡...10分钟左右,这就是我们一般手机验证码的有效期; 2)手机接收到手机短信后:那么就在界面填写验证码发送服务端,服务端收到验证码后就会在redis里面查询到这个手机号对应的验证码,失败就返回错误码。...时序流程详细说明: 1)客户端自己调起登录的界面,进行输入用户名、密码,这里的是第三方的用户名,密码,登录成功后,会返回access_token openid expire_in,这过程会使用到oauth2.0...校验不通过则返回对应错误码; 3)校验通过后就会判断本地是否有这个login_type和openid是否存在,不存在则进行获取远程的用户名、头像等基础信息来作为本地基础数据,并且返回code值; 4)如果已经存在...,那就是进行登录操作,返回code值; 5)客户端拿到code值后进行token值的换取,这个完全遵照oauth2.0的协议来走的,后续每次请求必须带上token,token值在服务端的时间比较久,因为我们想要做的是那种永不下线的操作
function $(id) { return document.getElementById(id); } function login_yz() { //验证 用户名 和 密码不能为空...//获取用户名 var uname = $("uname").value; if(uname.length==0){ alert("用户名不能为空"); return false...; } //获取密码 var upwd = $("upwd").value; if(upwd.length==0){ alert("密码不能为空"); return false...; } //获取验证码:判断和电脑的验证码是否相等 //PS:自己实现-输入的验证码不区分大小写-大小写转换 var yzm = $("uyzm").value; //yzm.lower...=str2){ alert("验证码输入错误,请重新输入"); //清空输入的验证码 $("uyzm").value=""; //重新生成验证码 yz(); return
你就简单认为在你的实体类属性上加点校验规则,但是这些校验规则到底该怎么加呢?...private String versionNo; @NotNull(message = "[手机号]不能为空!")...private String mobile; @NotNull(message = "[订单号]不能为空!")...private String orderId; @NotNull(message = "[验证码]不能为空!")...@Size(min = 0, max = 6, message = "[验证码]长度错误,最大长度为[{max}]!")
return document.getElementById(id); } function login_yz() { //验证 用户名 和 密码不能为空...获取用户名 var uname = $("uname").value; if (uname.length == 0) { alert("用户名不能为空...//获取密码 var upwd = $("upwd").value; if (upwd.length == 0) { alert("密码不能为空...= yzmStr) { alert("验证码输入错误,请重新输入"); //清空输入的验证码 $("uyzm").value =...(B);//这个是大小不区分大小写(A-a)的代码 } } //以上内容只是一个静态页面跳转的一部分(尚未连接数据库)
"[name=password]").next().text(""); } else { $("[name=password]").next().text("不能为空...= "") { //验证码不为空时,到后台进行比较,返回响应码,为1,提示请先获得验证码 //为2,提示验证码错误 //为3,验证码正确...} else if(result == "2") { $("[name=yanzhenma]").next().text("输入验证码与手机验证码不匹配...使用了SmsService方法对手机号发送验证码。成功返回0,失败返回1,在此处代码只要传到后台的phone不为空,肯定获取成功。...,到后台进行比较,返回响应码,为1,提示请先获得验证码 //为2,提示验证码错误 //为3,验证码正确,无提示 if(autocode==null){
校验验证码不通过的情况不仅仅需要考虑发送方的验证码文本为空或者文本不一致导致的错误,还需要考虑接受方(服务端)的验证码文本究竟有没有存储下来,以防通过接口工具直接 post 访问该接口产生的空数据。...from user where username = #{username,jdbcType=VARCHAR}复制代码使用该查询语句之前,我们必须先保证传过来的账户和密码不能为空...,查询才有意义,获取到 user 对象之后,我们先验证账户存不存在,如果不存在,返回错误信息就行了,如果存在的话,检查它的账户状态是否是激活状态,不是的话,返回错误信息,是的话,我们就能进行校验工作了,...代码如下://空值处理if(StringUtils.isBlank(username)){ map.put("usernameMsg", "账号不能为空!")...; return map;}if (StringUtils.isBlank(password)){ map.put("passwordMsg", "密码不能为空!")
,得到验证码 3,输入的验证码是否为空和是否正确, 4,最后向服务发送请求 界面展示 ?...,必须符合手机号正确和手机号码不能为空,短信发送服务用的是《聚合数据》,申请可以免费调用10次 getVerifyCode(){ //获取验证码 if(this.validatePhone()) {...this.phone) { this.errors = { phone:"手机号码不能为空" } // return false } else if(!...,登录之前需要判断,手机号和验证码都不能为空,所以在计算属性判断是否两个都为空,如果都不为空的话,可以点击按钮,否则不能点击按钮 computed: { //手机号和验证码都不能为空 isClick...$router.push('/') }).catch(error =>{ //返回错误信息 this.errors ={ code:error.response.data.msg }
这个action的功能是利用java画笔画出验证码并打包成图片返回给img中的src。 2.利用bootstrap中的modal实现对话框的功能。...false; }else if(validcode==""){ document.getElementById("dialogs").innerHTML="验证码不能为空...false; }else if(validcode==""){ document.getElementById("dialogs").innerHTML="验证码不能为空...error=="error"){ errors="true"; document.getElementById("dialogs").innerHTML="验证码错误...false; }else if(validcode==""){ document.getElementById("dialogs").innerHTML="验证码不能为空
现在大部分有关OAuth2.0的介绍文章都没有4,5,6,7步骤的说明,可能为了表述方便,默认都是将授权服务器跟资源服务器合在一起部署的。...最后,对请求返回的响应结果做复杂的异常处理,得到正确的返回值或者异常结果。...API】 5,实战--为OAuth2.0添加验证码功能 默认情况下,OAuth2.0的密码授权模式并没有支持验证码功能。...因此,登录的验证码功能是OAuth2.0授权功能和API网关代理相结合的一个比较好的实战案例。..., 指定 SessionRequired 属性为 true,如下所示: # 登录验证码配置 { "Prefix":"/api/Login/CreateValidate",
* 如果需要自定义逻辑来比较 UserDetails 和或 * UsernamePasswordAuthenticationToken 的其他*属性,则这些属性也应出现在此方法中。...this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "密码不能为空...* 如果需要自定义逻辑来比较 UserDetails 和或 * UsernamePasswordAuthenticationToken 的其他*属性,则这些属性也应出现在此方法中。...this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "密码不能为空...新手不建议直接阅读,源码有的地方写的属实是看不懂,很多的地方,不对比着来看话,可能就懵了,多看点源码靠谱,最近喜欢研究研究,很多技术我有点不感冒,感觉可能也看不太多,今年目标读一本书正在循序渐进,一起加油吧
领取专属 10元无门槛券
手把手带您无忧上云