前端做页面登录功能的一般思路、登录请求如何发出
一般都用vue写,可以从vant组件或者element-ui组件找个登录的from表单,写完css样式,设置校验规则,一种是非空的校验,一种是判断用户输入是否合法的校验,然后就是铺数据,这里一般用ajax发,一般都是用的模块化的思想来单独封装请求,发送后获取到token的数据,token除了登录页面别的页面想实现数据请求一般都要带,所以我们把token放到vuex中的state里,用mutatio
一般都用vue写,可以从vant组件或者element-ui组件找个登录的from表单,写完css样式,设置校验规则,一种是非空的校验,一种是判断用户输入是否合法的校验,然后就是铺数据,这里一般用ajax发,一般都是用的模块化的思想来单独封装请求,发送后获取到token的数据,token除了登录页面别的页面想实现数据请求一般都要带,所以我们把token放到vuex中的state里,用mutations里定义的方法来修改state中的数据,因为vuex中存贮的数据是存在内存里刷新后就没有了所以我们要把token存在本地,可以用localstarge或者cookie存储再把本地存储的token赋值到vuex中。然后再用请求拦截器给来给每次请求都加请求头和token 。但是呢,token不是永久的,所以会有这种失效的问题,所以当时的处理方案,就是根据后端返回的状态码进行判断,如果确实不存在了,那么用Vue-Router中提供的一个钩子函数,实现拦截,如果存在,那就正常放行, 最后$router.push()实现跳转登录功能。
gitee的ssh地址git@gitee.com:cai-meng666/human-resources.git
接下来单独说一下登录的请求如何发出
-
表单验证(login/index.vue)
-
utils/validate.js ---> validMobile
-
-
调用 api/user.js中封装好的api
-
找到axios实例:utils/request.js中获取axios实例
-
设置基地址从环境变量中获取,好处是上线后基地址自动变化。
-
全局都可以用process.env.VUE_APP_BASE_API,当基地址用
-
-
收集用户的参数,传给上一步中的api。(页面上收集页面的数据项名与接口中一致)
-
经过请求拦截器,添加请求头(添加token, utils/request.js)
-
后端没给设置,自己解决跨域问题,写一个代理转发(vue.config.js),代理是与本机同源的,而代理是服务器,服务器与服务器之间没有跨域问题,让代理来获取后端的数据,再传给客户端这样就解决了跨域的问题,但是这只能用在dev模式下,上线后就无法用了
-
后端服务器要启动,mongoDB也要启动;后端才能收到请求,返回数据
-
经过响应拦截器的处理(utils/request.js)
-
判断当前操作是否成功,决定是否axios报错Promise.reject()自动接收错误的结果
-
简化获取有效数据的写法(脱壳)response.data。axios请求的数据一般都爱带一层data可以在这里脱壳,方便后面使用
-
-
得到api调用之后的结果(login.vue)
-
保存token到vuex(store/modules/user.js)
-
token做持久化(utils/auth.js)
更多推荐
所有评论(0)