求一个通用的关键操作加验证码校验的思路

问题重点不在于如何发送验证码(网上大多只能搜到这些。说真的,用短信发验证码,还是邮件发验证码,不过封装一下而已,根本没什么好说的)

重点问题在于:
如何在一系列前置操作之后,在最关键的一步之前,拦截住,让用户做一次验证,然后才能继续执行。
这一步验证,其实未必要是“验证码”,甚至“重新输入密码”、“输入完整手机号”等等的验证操作也是可以的。关键在于怎么在中间插入这么一步验证,还能完成整个流程。
之前没做过这方面的工作,没什么经验。
随便举个例子:
比如一个修改个人信息的功能,不能让人乱改。需要在用户填完一整页的表单后,在点击“提交”按钮时,弹窗提示要验证,点击按钮获取邮件验证码,验证通过后,先前的表单才会提交。

如果这个验证环节是个可开启关闭的开关,前端怎么知道每次点击“提交”按钮时,是否需要做验证的流程?

当用户点击“提交”的时候,是前端流程中断,等验证完再提交数据;还是当时就已经把数据提交到后端,然后后端告诉前端需要验证,让前端走验证流程,等验证通过后,先前提交到后端的数据才正式进入数据处理的业务流程?

既然是要验证,那么每次的验证都应该一条记录吧?这条记录该如何记录?缓存?数据库?我该如何把前端的一次操作绑定到一条验证记录上?(换句话说,我怎么确定验证完后,执行的操作就是我刚才验证通过的操作?这个问题和上一个问题息息相关,这么一想,是不是必须把数据先提交到后端,暂存下来,连操作内容+数据一起,存个档,给个id之类的,然后把这个id和验证记录绑定在一起,再等待验证完成?)

如果已经有了现有业务操作了,想大规模改造,加上可开启关闭的验证流程,有什么建议?

对于“非前后端分离项目”,和“前后端分离项目”,有什么要注意的地方和建议吗?

上面的问题和一些思考都是我自己乱想的,不知道业内最佳最通用最标准的解决方案是什么?
求大佬解惑。

阅读 2.5k
1 个回答

首先,没有 最佳最通用最标准的解决方案,比如有些项目甚至不会有短信验证码这种东西(客户不愿意出这笔钱.

我想了一个思路:

  1. 用户填好表单
  2. 点击提交按钮,发起一个是否需要验证的请求到后端(一般情况是,通过 cookie 自动登录的用户在修改敏感信息时会需要二次验证;如果是通过手动登录进来的那么就不需要二次验证;但如果是特别敏感的,那发个验证码无可厚非
  3. 后端返回是否需要验证,如果需要则再前端发一个开始验证的请求(验证码、短信验证码之类
  4. 后端准备开始验证的时候,分配一个随机标识符(不是验证码内容)给这个用户名下(缓存、数据库都无所谓)
  5. 验证结束后,如果验证通过,则将这个标识符下发给前端,让前端带着标识符发起表单提交;如果验证不通过则让前端提示用户,用户可以选择重新验证或取消操作
  6. 后端接收到表单提交,验证标识符,缺标识符的、跟系统记录的不匹配的都视为非法提交;验证通过的清除用户名下的标识符.
推荐问题
宣传栏