实名认证功能

前面的文章中我们实现了后台manager系统中的流程管理功能,并且将实名认证的流程上传到了服务器并完成部署。不过,仅仅是长传和部署当然不是我们的目的啦!我们上传这个实名认证流程时为了可以让前台的广大用户可以使用这个流程,怎么才能使用这个功能呢?那当然是每个用户都需要的实名认证功能啦!

好,我们就来实现实名认证这个功能吧!首先实名认证这个功能是在前台系统的会员中心当中。

点击未实名认证就会跳转到实名认证的账户类型选择页面。

在账户类型选择页面中选中我们的类型后点击认证申请进行认证。

这这大体就是实名认证的几个步骤,在填写完验证码之后点击申请完成按钮,后台会校验我们输入的验证码信息,如果校验成功,会提示我们success实名认证成功。如果校验失败,会根据我们规定的流程重新执行某一个任务,直到整个流程当中所有的任务全部完成为止。

好,实名认证中的几个步骤搞清楚啦!那么我们创建的流程应该何时启动呢?还记得我们创建的实名认证流程中的几个任务吗?当流程启动之后,有三个任务需要执行,分别是发送验证码给用户、提交验证码开始验证、人工审核三个任务。第一个任务发送验证码给用户是使用向用户的邮箱发送邮件的方式发送临时生成的验证码,而用户的邮箱地址是由外面传进来的。上面的步骤3邮箱确认中正是我们填写自己邮箱地址的地方,所以我们的流程启动的时机,应该是在步骤3完成之后,也就是填写完自己的邮箱地址,点击下一步的时候启动实名认证的流程(再将我们在前几个步骤收集到的有用信息传递到流程中)。因为流程中的第一个任务是发送邮件(自动的,由activiti自己调用发送邮件的api,不需要我们操心)。那么第二个任务是在什么时候执行的呢?第二个任务是提交验证码开始验证,这个任务也需要外边传入的数据(验证码)。这个验证码应该与我们前边第一个任务发送邮件中的验证码保存一致(验证通过),否则验证失败。这个任务应该在步骤4申请确认之后执行,也就是在确定用户输入的验证码后,点击申请完成按钮后开始执行这个任务。如果用户填写的验证码与我们发送的验证码一致,流程就会进入下一个任务(人工审核)。此时距跟用户没什么关系啦,因为人工审核是需要后台管理员去审核的,用户只能查看审核结果(审核通过或未通过)。

首先是用户类型选择。选择完后会发送相关类型认证页面的请求。

在controller中处理这个请求,并跳转页面。

为了减少页面的跳转,只是让页面进行局部刷新,所以这个authpage.jsp页面是个空页面,内容需要单独发送ajax请求去获取。

它默认会发送步骤1的ajax请求来刷新页面。

在controller中处理并跳转到步骤1的apply.jsp。

在apply.jsp中填写用户信息后点击下一步按钮,将收集到的用户信息作为参数发送跳转的步骤2的ajax请求。

在controller中将用户提交过来的信息保存到数据库中(通过远程调用restapi的方式)。

保存成功后再根据用户类型获取用户所需要上传的所有资源,然后跳转到步骤2的apply-1.jsp页面。

在apply-1.jsp页面中以遍历的方式显示用户需要上传的所有文件类型。

每一个需要上传的资料类型在选中某一资料后,还可以进行预览。所有需要的资料都选择好之后,点击下一步发送去往步骤3apply-2.jsp页面的请求并提交我们要上传的所有资料。

在controller中跳转到appl-2页面。

可是我们的所有资料的上传操作在哪里呢?我们所有资料的上传操作不应该在scw-portal中进行上传操作。虽然前面步骤1当中的用户信息是通过scw-portal中的controller中专来发送远程请求到scw-restapi进行保存,但这种方式却不适合我们用来上传文件。因为我们上传的文件要比普通的用户信息大很多,这样才去中转的方式非常占用网络资源。所以我们采取不中转,从页面端直接向scw-restapi端上传文件,这样就省去了中间环节。可是这种从页面端向另一个服务器地址上传文件的ajax请求,在浏览器中是不被允许的,需要我们进行跨域设置。具体的设置方法下边在细说。

在远程服务scw-restapi的controller中处理上传文件的请求,保存上传过来的资质文件并更新数据库信息。

在步骤3的apply-2.jsp页面中填写我们自己的邮箱地址用于接收验证码,然后点击下一步发送验证码到邮箱并发送去步骤4appl-3.jsp页面的请求。

在controller中处理这个想邮箱地址发送验证码的请求,将发送邮件的请求转发到远程服务scw-restapi中。

如果发送邮件成功了,就跳转到步骤4的appl-3.jsp页面。

在远程服务scw-restapi的controller中先保存用户与邮箱的信息,然后发送邮件。

在service中根据用户id来保存用户的邮箱地址。

在service中发送验证码到邮箱,如何发邮件呢?这就需要我们之前上传上来的activiti的流程啦。我们创建的实名认证流程中第一个任务就是发送邮件任务,并且这个发邮件的任务是activiti自动发送的,不需要我们做任何操作。我们要做到就是找到我们之前已经部署到服务器中的实名认证流程,并开启这个流程,那么第一个任务就会自动执行啦。因为我们流程中的任务会需要使用从外部传入的数据,所以开启流程的同时还要出入需要的数据。为了方便我们之后的使用,我们会新创建一张t_member_ticket数据库表,专门用于存储用户id与开启的流程实例id的对应关系。这样我就可以容易的查到某个用户开启了哪些流程。

不过这里有个地方需要注意,虽然发送邮件任务是activiti自动完成的,但是如果我们使用自己搭建的邮箱地址向某个邮箱地址发送邮件时,我们还需要启动我们自己的邮件服务程序(比如apache-james)。

执行到这个步骤的时候,如果邮件发送成功,我们应该已经跳转到apply-3.jsp页面啦!这一步需要我们输入我们接收到的邮件中的验证码来进行确实。如果我们输入的验证码也邮件中的验证码一致,那么我们的流程就可以执行下一个任务啦!我们的流程中一共有三个任务,第一个发送邮件的任务activiti已经帮我们自动执行完啦!接下来的第二个任务提交验证码开始验证正式我们在这个步骤应该做的工作。

在apply-3.jsp页面中输入我们接受到的验证码,发送验证请求进行验证。

在scw-portal的controller中处理校验请求,访问远程服务进行校验,如果校验成功就跳转到success.jsp页面。

在远程服务scw-restapi中的controller中处理校验请求。在controller中如何校验验证码呢?校验验证码这个过程我们已经创建在实名认证的流程当中啦!已经不需要我们自己校验啦!我们只需要执行实名认证流程当中的提交验证码开始认证这个任务就可以啦!当然在执行这个任务的时候还需要传入必要的参数,还记得那些参数么?我们创建这个任务的时候需要外边传入的两个参数usercode和code(用户输入的验证码和向邮件中发送的验证码)。执行了这个任务后如何知道这个任务执行成功了并且成功进入到流程中的下一个任务了呢?也很简单,执行完任务后再次取得当前任务的名称,用这个名称与执行任务之前的任务名称进行比较,如果相同,说明执行任务失败啦,流程又返回到了最近一次执行的任务。如果不同,说明任务执行成功,流程进入到了下一个任务。

如果执行到了下一个任务,也就是实名认证流程中的最后一个任务---人工审核。那么实名认证这个功能对于我们用户来说就算是完成了,因为剩下的最后一个任务是由我们后台管理人员进行的人工审核工作。如果审核通过,用户的实名认证就彻底完成啦!如果审核不通过,那么用户就要重新开启一个实名认证的流程,重新认证。

现在我们来执行这个实名认证测试一下吧!

测试之前有两个地方需要注意!

1,因为之前在后台manager系统中我们已经将实名认证这个流程上传服务器,并且部署过啦!我们想要测试这个流程只需要找到这个流程并且执行就可以啦!查找部署好的流程当然是根据id或者名字查找啦!(可以去数据库中查看,免得执行的时候找不到流程)。

2,因为实名认证这个流程中有个发送邮件的任务,而我们发送邮件时使用的是自己搭建的邮件服务器发送的,所以应该先开启我们自己搭建的邮件服务器,免得发送邮件任务执行不成功。

好,都准备好了的话那就开始测试吧!

先开启前台用户web端专有服务和前台所有客户端的api接口服务。

使用前台用户账号登录网站并进入会员中心页面。

点击未实名认证按钮进入实名认证-账户类型选择页面,选择账户类型。选完后点击认证申请。开始认证。

在实名认证-申请页面的基本信息中填写个人信息,然后点击下一步。

在实名认证-申请页面的资质文件上传页面中上传相应的文件,然后点击下一步。

在实名认证-申请中的邮箱地址页面中填写正确的邮箱地址,然后点击下一步按钮,发送邮件。

此时查看eclipse的控制台可以看见我们在代码中打印的log信息,显示发送邮件成功,并且也成功的接收到了邮件。

将邮件中的验证码添写到实名认证-申请的申请确认页面中,然后点击申请完成按钮。等到校验验证码的结果。

如果我们填写的验证码与邮件中的验证码一致,就校验成功并跳转到success页面,要我们等待管理员的人工审核,到这里实名认证的前台用户操作完成。

我们也可以到activiti的数据库中查看相应的流程信息。

可以看到我们刚刚执行的流程实例信息。

也可以看这个流程都执行了哪些任务,有没有结束,目前执行到了那个任务。

甚至在流程执行的过程中使用的具体参数都可以看到。

是不是很简单!

ok,实名认证的前台用户认证申请功能完成啦!!!

                                          ajax发送跨域请求

接下来我们说说上边提到的使用ajax发送跨域请求。

由于浏览器的限制,是不允许一个地址下服务中使用ajax向另一个地址的服务器发送请求的。比如我们的前台web服务scw-portal项目中使用ajax向scw-restapi发送上传文件请求。由于scw-portal使用的端口号是8081,而scw-restapi使用的8082端口。所以发送ajax请求时会报错。

跨域请求:

跨域不允许;

本页面

function abc(data){

alert(data);

}

<script src="hello.js"></script>

hello.js:内容:   abc("你好");

效果,弹出你好;

1、跨域两种解决办法;

1)、jsonp;代表发起跨域请求;

利用浏览器对于script,img,a href没有跨域限制;

服务器不能反回json数据;

反回一个类似方法调用的格式;将交给浏览器的数据作为这个方法的参数;abc(json);

浏览器端正巧有这个方法名的方法;每次一返回相当于是对这个方法的调用;方法的参数就是数据;

1.1)、$.get(url?callback=?)

callback=? jquery随机搞一个方法名 作为回调函数

服务器;获取到callback的值,把数据夹里面写出去

abc(json);

服务还是返回json;

2)、服务器端进行跨域设置;浏览器发数据的数据的时候加上请求头说我要跨域;

服务器加上响应头,说谁能跨域?(告诉浏览器不要限制哪些地址ajax请求);

1+1=2

SpringMVC使用配置

这样就可以开启跨域请求啦! 是不是很简单!!!!

                             后台manager系统的实名认证人工审核

上边我们实现了前台用户web系统的实名认证功能,可是用户光提交了实名认证申请是不够的,这个功能还没有结束。剩下的事情就是需要啊后台管理人员进行人工审核,检查用户提交的信息是否正确或真实,通过审核的用户才算是真正的实名认证成功。

那我们就来实现一下这个后台manager系统中后台管理人员使用的实名认证人工审核功能吧!

首先,人工审核就是manager系统的业务审核-实名认证这个功能,点击实名认证就会跳转到审核认证页面,页面中的审核列表会显示出所有实名认证流程当中执行到人工审核这一任务的流程,后台管理人家只需要对某一流程进行审核就行啦!

先配置数据库中的t_permission表中的实名认证链接,和图标。让在点击实名认证的时候跳转到审核列表页面。

在controller中处理这个请求audi/auth/list,先查询所有正在执行中,流程名字叫做人工审核的流程,再根据所有的流程实例id取得开启流程的用户信息和用户相应的资质信息。将这些信息放在隐藏域中并跳转到审核列表页面。

添加审核列表页面,这个页面也很简单只需要拿之前其他的页面修改一下就好了。

在页面中将我们保存到隐藏域的所有信息显示到审核列表中。

用户的资质信息我们采用弹出模态框的形式显示。

点击列表中某一审核信息中的点击预览按钮,将该条审核信息中用户的资质信息显示在模态框中。

如果后台的管理人员查看该用户的信息与相关资质信息都符合要求,那么就可以通过审核啦!点击列表中某一用户相关的申请中的审核按钮,将该用户的id作为参数发送审核通过请求。成功返回后重新显示审核列表页面(刷新页面)。

在controller中添加审核通过的处理方法。先将activiti数据库中所有运行流程中执行到人工审核任务的流程信息全部取出来,再根据用户id查找到的流程实例id,找到某一具体的流程信息。然后执行完成这个流程信息中的人工审核任务。

就这么简单的完成啦。

好了,我们测试一下吧!

登录用户,点击业务审核-实名认证,跳转到认证列表页面。

点击预览按钮,查看用户的资质信息(因为我们的资质信息是上传到的前台用户的接口服务器中scw-restapi,我们查看用户的资质信息时也是向scw-restapi发送图片请求,所以可不要忘了启动scw-restapi服务呦!!!)。

检查过资质信息后点击审核按钮,通过人工审核,实名认证成功。

通过后我们再来看这个认证列表页面,此时认证列表中已经没有需要人工审核的任务啦!

ok!到这里,有关什么认证的前台、后台功能都完成啦!

在最后附上代码以供需要时查看:https://download.csdn.net/download/qq_25106373/11505896

java学习笔记——众筹项目练习——前台系统的实名认证功能、ajax发送跨域请求、后台manager系统的实名认证人工审核相关推荐

  1. java学习笔记——众筹项目练习——项目中的忘记密码(密码找回)与记住我(自动登录)功能 和 返回json数据低版本浏览器显示下载问题的解决、众筹系统架构重构

                                          忘记密码(密码找回) 忘记密码(密码找回)这个功能可以说是目前所有为别人提供服务的软件系统都具备的基础功能啦!很普遍,因为总 ...

  2. Java学习笔记_15 项目实战之天天酷跑(二):开始游戏界面

    前文,我们完成了登录界面的搭建.本文将完成开始游戏界面的搭建,并建立起登录界面与开始游戏界面的桥梁. 实现在输对用户名和密码后即可进入开始游戏界面的功能. 界面功能需求图: 具体要求: 当鼠标移入开始 ...

  3. Java学习笔记_16 项目实战之天天酷跑(三):缓冲加载游戏界面

    前文,我们完成了开始游戏界面的搭建.本文将实现缓冲加载界面的搭建.并搭建与前面俩界面间的桥梁. 实现输入正确用户名密码后,进入开始游戏界面,点击开始游戏按钮后,进入缓冲加载界面的功能. 界面示意图: ...

  4. Java学习笔记_17 项目实战之天天酷跑(四):游戏主界面

    接上文,本文将实现游戏主界面,功能如下: 移动的背景图片.动态的玩家.玩家的移动功能. 五种障碍物持续出现.玩家和障碍物的碰撞. 暂停.继续功能. 首先,看一下整体效果: 动图实在太大,几秒钟的 Gi ...

  5. 基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: ...

  6. java学习笔记(二十八)——开发一个小项目(VMeeting3.0)

    上篇文章按照较规范的产品需求文档梳理了项目的逻辑,感觉开发起来明晰了很多:挂上一篇文章java学习笔记(二十七)--开发一个小项目(VMeeting2.0)_Biangbangbing的博客-CSDN ...

  7. Java学习笔记项目三:开发团队调度软件(尚硅谷)

    JAVA学习笔记开发团队调度软件 ①创建基础组件 Equipment 接口 package august.domain;/*** 设备领取** @author : Crazy_August* @Dat ...

  8. Java学习笔记 --- 零钱通项目

    一,项目开发流程说明 1.项目需求: 使用Java开发 零钱通项目,可以完成收益入账,消费,查看明细,退出系统等功能 2.项目界面: 二.使用面向过程编程实现: package com.javase. ...

  9. JAVA学习笔记(1)【基础知识】

    JAVA学习笔记DAY_1 提示:关于java系列的内容只是本人在老师的指导下和自学过程中的一些学习笔记,如果存在错误敬请批评指正! 文章目录 JAVA学习笔记DAY_1 前言 一.Java语言未来的 ...

最新文章

  1. svn中的ignore
  2. 关于召开全国大学生智能车竞赛--百度智慧交通项目 培训通知(华中站)
  3. 鼓作气学会“一致性哈希”,就靠这 18 张图了
  4. lua.c:80:31: fatal error: readline/readline.h: No such file or directory
  5. C++中消息机制阻塞实验
  6. java_poi教程.pdf,如何使用POI转换.DOC / .DOCX为PDF在Java ..?
  7. Twitter开放平台api key申请流程 (Twitter Consumer Key)
  8. Uncaught ReferenceError: FileAsyncWriter is not defined
  9. 移动端测试===adb shell top命令解释
  10. python装饰器快速入门
  11. Linux 创建和销毁 urb
  12. cocos2d-x学习之旅(二):1.2 cocos2d-x Visual Studio2010 开发环境搭建 windows 7 32位
  13. memset()的用法
  14. oracle12能卸干净吗,oracle卸载干净【设置方案】
  15. 从数学角度看基金定投
  16. 来自福布斯富豪榜马总的建议,为什么一定要学Python?
  17. 用友系统客户端登录不上服务器,客户端不能登录服务器-用友U8
  18. MySQL索引 聚集索引
  19. 2、软件测试生命周期以及流程
  20. 平面设计10大手法,设计师必看

热门文章

  1. [附源码]JAVA+ssm化妆品销售购物系统(程序+Lw)
  2. 德阳计算机信息通信学校,四川省信息通信学校2021年招生简章
  3. 基于最小均方误差linear minimum mean square error(LMMSE)插值算法的图像超分辨重构研究-附Matlab代码
  4. 发现一个很强的国产软件。可以给视频加动画大头贴
  5. [前端面试] 微信小程序相关面试题
  6. 小工具--HBuilder
  7. 09.领导力发展的案例摘录——卓越领导者
  8. 计算机自适应测评(CAT)调研
  9. LaTex报错:Environment keywords undefined
  10. 深度学习论文: A ConvNet for the 2020s及其PyTorch实现