前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零搭建一个django项目-11.5-token请求判断优化

从零搭建一个django项目-11.5-token请求判断优化

作者头像
怪盗LYL
发布2022-06-13 13:26:46
3250
发布2022-06-13 13:26:46
举报
文章被收录于专栏:测试开发真货测试开发真货
  • 通过搜索引擎搜索了下axios怎么获取响应头,总结下就是浏览器只能访问默认的响应头,如果需要获取自定义的响应头需要在响应头里设置Access-Control-Expose-Headers
  • 刚开始时候我看的有点蒙,后来我发现了其实原理就是在响应头加一个Access-Control-Expose-Headers字段,它的value值就是自定义的响应头字段。
代码语言:javascript
复制
return Response({"all_href":all_href},headers={"token":"token","a":"a","Access-Control-Expose-Headers":"token,a"})
  • value值使用逗号隔开,这里我设置了自定义变量token和a,然后在前端获取headers打印看看。

geturl() { axios.get('http://localhost:8000/api/geturl').then((response) => { console.log(response.headers) this.v_hrefs = response.data.all_href; }).catch(err => { console.log('操作失败' + err); }) }

  • 可以看到打印了token和a两个字段,现在我们把自定义设置里面的a去掉:
代码语言:javascript
复制
returnResponse({"all_href":all_href},headers={"token":"token","a":"a","Access-Control-Expose-Headers":"token"})
  • 然后重新打印下:
  • - 可以看到a字段没了,嘿嘿~
  • 刚刚只是测试下返回响应头,现在可以再登录接口返回token了。
  • 注意看获取的token的key是小写的,前端会默认转换成小写,所以取值时候使用小写。
  • 有登录就有退出,做一个退出按钮在右上角飘着~
代码语言:javascript
复制
	<div style="position:relative">      
		<el-button style="position: fixed;right: 0%;"  type="danger" size="small"   @click="quit()">退出登录</el-button>
	</div>
  • 调用函数quit,函数里面删除token和用户信息然后调转到登录页面,注意remove参数里面域生产以后要换成生产主机域名。
代码语言:javascript
复制
quit() {    this.$cookies.remove("login-token",{domain:'localhost',path:'/'});    this.$cookies.remove("username",{domain:'localhost',path:'/'});				    this.$router.push("/")			},
  • 我们还应该在页面加一下登录校验,如果没有登录tokencookie值就直接跳转到登录页面。
代码语言:javascript
复制
		mounted() { //这个属性就可以,在里面声明初始化时要调用的方法即可
			// we can implement any method here like
			this.geturl(),		                        this.login_check()
		}
  • 校验方法
代码语言:javascript
复制
login_check() {				var v_token = this.$cookies.get("login-token");				console.log(v_token);				if (v_token== null){					this.$router.push("/")
				}else{					console.log('登录了')
				}
			},

然后再登录页面页判断下是不是已经登录过了,如果已经登录过了直接跳转到首页。

代码语言:javascript
复制
  mounted() { //这个属性就可以,在里面声明初始化时要调用的方法即可
      // we can implement any method here like
    this.logined_check()
    
    
代码语言:javascript
复制
logined_check() {
  var v_token = this.$cookies.get("login-token");
  if (v_token!= null){
    this.$router.push("/home")
  }else{
    console.log('已经登录了')}
  },

登录请求已经校验就基本完事了,下一节完善首页那个搜索功能。

周末拍的小姐姐,小姐姐真好看~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发真货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档