vue项目中js-cookie的使用存储token操作
程序员文章站
2022-04-06 14:11:28
1、安装js-cookie# npm install js-cookie --save# yarn add js-cookie2、引用(需要的文件)import cookies from 'js-co...
1、安装js-cookie
# npm install js-cookie --save
# yarn add js-cookie
2、引用(需要的文件)
import cookies from 'js-cookie' const tokenkey = 'admin-token' export function gettoken() { return cookies.get(tokenkey) } export function settoken(tcuncuoken) { return cookies.set(tokenkey, token) } export function removetoken() { return cookies.remove(tokenkey) }
3、浏览器cookie
4、 也可以存储其他
const user = { name: 'lia', age: 18 } cookies.set('user', user) const liauser = json.parse(cookies.get('user'))
补充知识:vue 实现记住密码功能,用户信息在客户端加密存储
效果图:
功能详解:用户登录时,勾选记住密码,系统会将登录信息存入浏览器cookie中,下次登录时系统会自动将信息回写在输入框中(默认设置保存时间为3天,此处需要将密码进行加密处理,以提高安全性)
1.定义页面元素,v-model绑定变量
2.
3.引入vue的加密组件 cryptojs,执行这条命令,系统会自动安装
npm install crypto-js
安装成功后,还需在登录页面引入组件
4.定义操作cookie的三个方法,后面需要用到,代码我贴出来
/************* cookie start ***************/ clearcookie(cookiename) { var exp = new date(); exp.settime(exp.gettime() - 1); var cval = this.getcookie(cookiename); if (cval != null) { document.cookie = cookiename + "=" + cval + ";expires=" + exp.togmtstring(); } }, setcookie(cookiename, value, expiremminutes) { var exdate = new date(); exdate.settime(exdate.gettime() + expiremminutes * 60 * 1000); document.cookie = cookiename + "=" + escape(value) + ((expiremminutes == null) ? "" : ";expires=" + exdate.togmtstring()); }, getcookie(cookiename) { if (document.cookie.length > 0) { var c_start = document.cookie.indexof(cookiename + "="); if (c_start != -1) { c_start = c_start + cookiename.length + 1; var c_end = document.cookie.indexof(";", c_start); if (c_end == -1) c_end = document.cookie.length return unescape(document.cookie.substring(c_start, c_end)) } } return "" }, /*************cookie end***************/
5.在登录方法中判断记住密码是否有被勾选,如果有,则需要将账号密码信息存入cookie中,没有,则调用上面的方法清除cookie信息,关键步骤我已标记,登录方法在下面:
/************* 登录 start ***************/ signin() { let _this = this; //判断是密码登录还是短信登录 if (_this.indexd == 0) { _this.$refs['ruleform'].validate((valid) => { if (valid) { //定义要存入cookie的对象 var accountinfo = ""; //拿到输入框中的密码,使用aes加密 var pwd = _this.form.pwd; var newpwd = cryptojs.aes.encrypt(pwd,'secret key 123'); //若勾选记住密码 if (_this.checked == true) { console.log("选择记住密码,checked == true"); accountinfo = _this.form.name + "&" + newpwd; //将加密后的密码存入cookie对象中 _this.setcookie('accountinfo',accountinfo,1440*3); //传入账号名,密码,和保存天数3个参数(3天) }else { console.log("清空cookie"); _this.clearcookie('accountinfo'); //清空cookie } let params = { "username": _this.form.name, "password": _this.form.pwd, "vcode": _this.form.imgcode, "logintoken": _this.logintoken, }; post('/login/login', params).then(function (response) { if (response.data.code == "20000") { sessionstorage.setitem("v-token", response.data.data.token); sessionstorage.setitem("v-menu", json.stringify(response.data.data.routers)); sessionstorage.setitem("v-user", json.stringify(response.data.data.currentuser)); //_this.makerouters(response.data.data.routers); _this.$message({ message: '登录成功', type: 'success' }); _this.clearcookie("login_token");//清除token //平台 if (response.data.data.currentuser.type == 0) { //平台 _this.$router.push('/index'); } else if (response.data.data.currentuser.type == 1 || response.data.data.currentuser.type == 3 || response.data.data.currentuser.type == 2) { //渠道商 _this.$router.push('/operate'); } else { //证券商 _this.$router.push('/aoinformationmanagement') } } else if (response.data.code == "50000") { _this.$message.warning(response.data.msg); _this.changecode(); } }).catch(function (err) { _this.$message.error(err); _this.changecode(); }) } }); } }
5.选择记住密码,登录系统后,可以在调试模式中查看cookie信息,如图:
6.退出系统后,需要判断cookie有无账号信息,如果有,则进行回写,下面是我的方法:
在钩子方法中调用下面的loadaccountinfo回写方法
//预读取cookie中用户信息 loadaccountinfo(){ let self = this; //admin%26u2fsdgvkx1+/ztagwfvi37gnwa7tuzmqm+yazincpxs%3d let accountinfo = self.getcookie('accountinfo'); //如果cookie里没有账号信息 if(boolean(accountinfo) == false){ console.log('cookie中没有检测到用户账号信息!'); return false; } else{ //如果cookie里有账号信息 console.log('cookie中检测到账号信息!现在开始预填写!'); let username = ""; let password = ""; let index = accountinfo.indexof("&"); username = accountinfo.substring(0,index); password = accountinfo.substring(index+1); //拿到加密后的密码 //解密 var bytes = cryptojs.aes.decrypt(password.tostring(),'secret key 123'); //拿到解密后的密码(登录时输入的密码) var newpassword = bytes.tostring(cryptojs.enc.utf8); self.form.name = username; self.form.pwd = newpassword; self.checked = true; } },
7.最后效果就是这样
以上这篇vue项目中js-cookie的使用存储token操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
下一篇: 原码补码移码的作用(计算机组成原理14)