2020/12/10自学项目问题总结

2020/12/10自学项目问题总结

axios的实例化,post后台传参的问题

解决代码:
1.配置axios实例化

import axios from 'axios'
export function request(config){
	const instance = axios.create({
		baseURL:'http://localhost:8080',
		timeout:5000
		
	})
	return instance(config)
}

get实例方法,以及拿到数据后执行的方法

request({
					url:'/index.php/index/index/verify',
					method:'get',
					params:{
						value:this.thisyanzheng
					}
				}).then(res=>{
					console.log('res')
					if(document.querySelector('#yz').value == ''){
						document.querySelector('#yztext').innerHTML='请输入验证码'
						return false
					}
					if(res.data.state==false){
						document.querySelector('#yztext').innerHTML='验证码错误'
						return false
					}
					if(res.data.state==true){
						this.yanzheng ='true'
						document.querySelector('#yztext').innerHTML=''
					}
				})

3.post方法比较特殊,需要qs插件,可以从 vue ui里面下载。
并且要在main.js内和组件内引用。
代码如下:

let data = {
					user : this.userna,
					password : this.pwdna
				}
					request({
					    method: 'post',
					    url: '/index.php/index/index/login',
					    data: qs.stringify(data)
					})

本地测试跨域问题解决

本地在一级目录 src同级目录下创建 vue.config.js,并输入代码。解决跨域问题,打包后要删掉,因为,打包之后不存在跨域的问题

module.exports = {
  
    devServer: {
        open: true,
        proxy: {
            '/index.php': {    // '/index.php'的意思是匹配所有带 '/index.php'的地址
                target: 'http://www.userup.com',//要代理的本地api地址,也可以换成线上测试地址
                changeOrigin: true//允许跨域
                
            }
        }
    },
    lintOnSave: false// 屏蔽EsLint
}

路由拦截的问题,禁止用户直接从地址跳转到别的地址。

//路由拦截
const whiteList = ['/zhuce', '/', '/']
router.beforeEach((to,from,next)=>{
	if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单,直接进入
	      next()
	    } 
	else {
		//判断有没有name
	      if(!localStorage.getItem('name')){
	      if(to.path !=='/home'){
	      	return next('/home')
	      }	
	      }
	      next()
	    }
})

通常我们在登录账号的时候,后台会发送一个token值,但是本次用name代替,登录成功后,本地会储存一个name,然后进行判断,是否有name执行语句。

let storage = window.localStorage;  //路由拦截设置,记录上传
						storage.setItem('name', 'name');   //上传name

多窗口进行保存登录状态

用户在登录的时候,需要在本地储存数据,并且记录一下登录状态,我们知道的向本地储存数据的有两个属性,localStorage和sessionStorage
他们的区别是,
sessionStorage只是单页面保存,多页面不会共享登录状态,关闭浏览器,会删除数据。
localStorage会有这多页面保存共享登录状态,关闭浏览器,也会进行数据的保存,
但是如果我们想要关闭浏览器之后清除localStorage本地保存的值并且刷新不会清除

mounted() {
			  window.onbeforeunload = function () {
				  
				    if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
				      {
				             var storage = window.localStorage;
				             storage.clear()
				      }
			               
			            }
			        
		}

需要执行这个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值