登录逻辑实现
JWT(json web token)
配置接口
- 获取验证码接口:获得验证码的
code和对应图片数据 - 登录接口:将验证码的标志
code、用户输入的验证码validateCode、用户名account、密码password4个参数提交到后台,获取token。(以上字段均为例子,实际可能不同)
登录页
使用验证码接口获得验证码验证标志
code和验证码图片数据开发表单:
- 将验证码图片在表单中显示出来,实现点击图片更新验证码数据,
- 实现
account、password、validateCode3个字段供用户输入(一般需要对密码md5加密) - 完成对三个字段的表单提交验证
- 提交表单
显示登录中状态,登录成功或者失败后恢复,期间禁止重复提交表单
成功
- 保存
token到本地和当前环境 - 提示成功信息
- 跳转到首页或者根据
url的重定向地址跳转
- 保存
失败:显示后台返回的错误信息
管理token的模块
- 设置一个本地不会重复的
token字段名作为本地储存的键名 - 提供一个方法
setAuthorizationCode,可更新本地的token - 提供一个方法
getAuthorizationCode,可获取本地的token - 提供一个方法
cleanAuthorizationCode,可删除本地的token
路由守卫
- 不存在
token- 即将跳转的页面为登录页面:直接跳转
- 即将跳转的页面为其他页面:重定向到登录页(携带即将跳转的页面地址供登录页重定向)
- 存在
token- 即将跳转的页面为登录页面:重定向到首页
- 即将跳转的页面为其他页面:直接跳转
接口使用token
- 创建请求实例,所有请求通过此实例进行请求,并对此实例进行拦截
- 拦截实例请求:使用
getAuthorizationCode获得最新token,将token填入请求头部:一般为:Authorization:Bearer {token} - 拦截实例响应:对响应中的特殊字段进行判断,如登录状态已经失效则使用失效方法跳转至登录页(对此方法判断当前是否是登录页再跳转和实现3s内的防抖防止重复提示和跳转)
