最近在写一个重构node社区的小项目,碰到了登录的问题,实现思路如下:

1.获取用户表单信息,使用axios提交,提交成功后,把数据存在cookie,以便后续操作。

2.其中有个人信息的页面展示,获取cookie信息,判断用户是否登录,如果登录则显示内容,未登录则跳转到登录页面,所以个人信息的页面可以使用路由守卫

搜索资料时有看到这种写法,就是经过判断后去改变的动态路由来决定跳转到哪个组件,感觉稍显麻烦。

3.退出操作,清除cookie

可以把操作cookie的代码放到一个单独的src/utils/cookie.js文件,utils这个文件夹可以放一些工具类的文件

cookie.js

//获取cookie

export function getCookie(name){

var cookieName = encodeURIComponent(name) + "=",

cookieStart = document.cookie.indexOf(cookieName),

cookieValue = null;

if (cookieStart > -1){

var cookieEnd = document.cookie.indexOf(";", cookieStart);

if (cookieEnd == -1){

cookieEnd = document.cookie.length;

}

cookieValue = decodeURIComponent(document.cookie.substring(cookieStart

+ cookieName.length, cookieEnd));

}

return cookieValue;

}

//设置cookie

export function setCookie(name, value, expires, path, domain, secure) {

var cookieText = encodeURIComponent(name) + "=" +

encodeURIComponent(value);

if (expires instanceof Date) {

cookieText += "; expires=" + expires.toGMTString();

}

if (path) {

cookieText += "; path=" + path;

}

if (domain) {

cookieText += "; domain=" + domain;

}

if (secure) {

cookieText += "; secure";

}

document.cookie = cookieText;

}

//删除cookie

export function delCookie(name, path, domain, secure){

setCookie(name, "", new Date(0), path, domain, secure);

}

后面发现vue有一个关于操作cookie的插件js-cookie,安装一下就可以使用了

例如

import Cookie from 'js-cookie'

const TokenKey='Admin-Token'

export function getToken(){

return Cookie.get(TokenKey)

}

export function setToken(token){

return Cookie.set(TokenKey,token)

}

export function removeToken(){

return Cookie.remove(TokenKey)

}

登录组件的login方法

methods:{

login(){

axios.post('api/v1/accesstoken',{

accesstoken:this.info

})

.then(

res=>{

const info=this.info;

setCookie('accesstoken',this.info)

setCookie('username',res.data.loginname)

setCookie('userid',res.data.id)

this.$router.push( {name:'myinfo',params:{user:res.data.loginname} } )

}

)

.catch(

err=>{

alert(err)

}

)

}

}

个人信息组件显示与否的判断

beforeRouteEnter(to,from,next){

if(to.meta.requireAuth){ //此组件需要登录

if(getCookie('accesstoken')==null){

next({

path:'/login'

})

}else{

next()

}

}else {

next(); //否则不需要登录,直接进入路由

}

},

退出操作

//退出登录

logout(){

delCookie('userid') //名字要对应getCookie的值

delCookie('accesstoken')

delCookie('username')

this.$router.push({

path: "/login"

})

}

其他操作

例如点赞和评论等功能,也要判断用户是否登录

vue展示信息卡片_vue实现登录和个人信息组件展示相关推荐

  1. vue展示信息卡片_vue 个人中心会员卡片组件

    项目需求: 项目个人中心页会员卡片组件 slot插槽规则: 父级模板里的所有内容都是在父级作用域中编译的:子模板里的所有内容都是在子作用域中编译的. 组件: export default { name ...

  2. vue展示信息卡片_vue组件系列-气泡卡片

    从模态弹框讲起 前端攻城

  3. antd vue关闭模态对话框_Vue.extend 登录注册模态框

    模态框是我们 UI 控件中一个很重要的组件,使用场景有很多种,我们在 Vue 组件中创建模态框组件而用到的一个知识点是利用 Vue.extend 来创建.文档中的解释是  在最近在做一个常用的类似下面 ...

  4. 前端学习(2682):重读vue电商网站3之登录页面总结el-form 组件问题

    el-form 组件默认是 content-box,我们设置其如下属性时,就会出现长度比我们想象中长一点的情况. .login_form {position: absolute;bottom: 60p ...

  5. 【vue】 vue项目开发卡片展示页面----菜品管理

    vue项目开发卡片展示页面----菜品管理 对话框表单获取父组件数据 子组件dishform 对话框表单样式 methods 中的dataInit方法 获取父组件传来的数据 <script> ...

  6. vue 用户名重复验证_Vue中的验证登录状态

    Vue项目中实现用户登录及token验证 先说一下我的实现步骤: 使用easy-mock新建登录接口,模拟用户数据 使用axios请求登录接口,匹配账号和密码 账号密码验证后, 拿到token,将to ...

  7. reload vue 重新加载_vue面试,谈下router拦截

    最近开始准备面试,尽管是电话面试全身还是充斥着紧张感,一面感觉还不错,主要是问react和vue的一些生命周期,介绍下redux...,二面印象深刻的是问到了介绍下router拦截,我觉得还是个人对r ...

  8. vue 专题 vue2.0各大前端移动端ui框架组件展示

    Vue 专题 一个数据驱动的组件,为现代化的 Web 界面而生.具有可扩展的数据绑定机制,原生对象即模型,简洁明了的 API 组件化 UI 构建 多个轻量库搭配使用 请访问链接: https://ww ...

  9. vue 循环 递归组件_Vue一个案例引发的递归组件的使用

    今天我们继续使用 Vue 的撸我们的实战项目,只有在实战中我们才会领悟更多,光纸上谈兵然并卵,继上篇我们的<Vue一个案例引发的动态组件与全局事件绑定总结> 之后,今天来聊一聊我们如何在项 ...

最新文章

  1. Firefox 突然拉黑中国用户
  2. python列表--查找集合中重复元素的个数
  3. 聚美app之 _sign参数分析
  4. mysql增量备份保留策略_Mysql备份策略-完成备份+增量备份shell
  5. perl6正则 4: before / after 代码断言: ?{} / !{}
  6. 引用类型赋值“.NET技术”为null与加速垃圾回收
  7. 网络安全人才平均年薪 24.09 万,跳槽周期 31 个月,安全工程师现状大曝光!
  8. android8卡顿,Android 8.0系统曝光,解决了安卓系统卡顿的问题
  9. 【SpringBoot_ANNOTATIONS】自动装配 02 @Resource @Inject
  10. cad学生版和教育版_针对学生和教育者的3个版权提示
  11. 【英语学习工具】学习英语硬背硬记太难了, 在这里解说 LeHoCat 提供免费的 视频集 工具的使用方法, 看视频学英语的工具, 制作英语教学课件的工具, 帮助自学英语(详细图文)第2版
  12. 爬虫免费Charles使用教程
  13. 180729 5行命令win10企业版永久激活方法
  14. jav学习笔记-String源码分析
  15. 基于python的百度离线地图下载器
  16. 塞班3的java键盘_【图片】Symbian3系统简介【塞班3吧】_百度贴吧
  17. 无法同步因计算机未授权,iTunes无法授权和同步解决办法教程
  18. 初步了解区块链技术落地——FISCO BCOS 快速搭建区块链
  19. mysql出现2058,连接MySQL报“Error No.2058 Plugin caching_sha2_password could not be loaded”
  20. 同义词,反义词(antonym,synonym)的英文表达理解

热门文章

  1. 判斷字符串中是否含有中文字符
  2. shiro+thymeleaf 整合
  3. PHP知识点 自己做个记录
  4. SD-WAN开源优势是什么?
  5. AD不能复制提示目标主要名称不正确
  6. FishC01 讲:我和 Python 第一次亲密接触
  7. Python简单遍历字典及删除元素的方法
  8. Yii框架中使用SRBAC作为权限管理模块时遇到的问题
  9. 数据库连接类:DatabaseConnection
  10. 本地数据源:使用firebird数据库