Vue+localstrong登录注册,并保持登录状态
在router.js中添加meta区分
比如登录注册页面,不需要登录即可进入,那么我们把meta中的isLogin标志设置为false
{
//登录
path: '/login',
component: login,
meta: {
isLogin: false
}
},
{
//注册
path: '/register',
component: register,
meta: {
isLogin: false
}
},
而在首页我们需要登录才能进入,那么我们把meta中的isLogin标志设置为true
{
//首页
path: '/home',
component: home,
meta: {
isLogin: true
},
}
这样我们就为进入各个路由是否需要登录做了区分。
接下来我们在login.vue中修改登录后状态
我们使用axios向后台发起登录请求
this.$axios.post("/xxx/login", {user:name,password:pwd})
.then(data => {
//登录失败,先不讨论
if (data.data.status != 200) {
//iViewUi的友好提示
this.$Message.error(data.data.message);
//登录成功
} else {
//设置Vuex登录标志为true,默认userLogin为false
this.$store.dispatch("userLogin", true);
//Vuex在用户刷新的时候userLogin会回到默认值false,所以我们需要用到HTML5储存
//我们设置一个名为Flag,值为isLogin的字段,作用是如果Flag有值且为isLogin的时候,证明用户已经登录了。
localStorage.setItem("Flag", "isLogin");
//iViewUi的友好提示
this.$Message.success(data.data.message);
//登录成功后跳转到指定页面
this.$router.push("/home");
}
});
Vuex里面我是这样写的(如果项目不需要Vuex,那么直接使用HTML5储存就可以了):
export const store = new Vuex.Store({
// 设置属性
state: {
isLogin: false,
},
// 获取属性的状态
getters: {
//获取登录状态
isLogin: state => state.isLogin,
},
// 设置属性状态
mutations: {
//保存登录状态
userStatus(state, flag) {
state.isLogin = flag
},
},
// 应用mutations
actions: {
//获取登录状态
setUser({commit}, flag) {
commit("userStatus", flag)
},
}
})
在mian.js里
router.beforeEach((to, from, next) => {
//获取用户登录成功后储存的登录标志
let getFlag = localStorage.getItem("Flag");
//如果登录标志存在且为isLogin,即用户已登录
if(getFlag === "isLogin"){
//设置vuex登录状态为已登录
store.state.isLogin = true
next()
//如果已登录,还想想进入登录注册界面,则定向回首页
if (!to.meta.isLogin) {
//iViewUi友好提示
iView.Message.error('请先退出登录')
next({
path: '/home'
})
}
//如果登录标志不存在,即未登录
}else{
//用户想进入需要登录的页面,则定向回登录界面
if(to.meta.isLogin){
next({
path: '/login',
})
//iViewUi友好提示
iView.Message.info('请先登录')
//用户进入无需登录的界面,则跳转继续
}else{
next()
}
}
});
router.afterEach(route => {
window.scroll(0, 0);
});
Vue+localstrong登录注册,并保持登录状态的更多相关文章
- 结合数据库登录注册模块,登录成功之后跳到WebView
最近刚刚做了一个模块,在本地建立一个数据库,存储注册的账号,登录的时候取出,正确则登录,登录之后跳到一个webView网页. 直接上代码吧. LoginActivity.java package co ...
- nodejs+express+mongodb实现登录注册
nodejs+express+mongodb实现登录注册 1 简介 登录注册功能使用nodejs+express+mongodb完成,其中对mongodb的操作使用mongoose完成,对mongod ...
- Vue登录注册,并保持登录状态
关于vue登录注册,并保持登录状态,是vue玩家必经之路,网上也有很多的解决方法,但是有一些太过于复杂,新手可能会看的一脸懵逼,现在给大家介绍一种我自己写项目在用而且并不难理解的一种方法. 项目中有一 ...
- 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册
项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...
- vue+Mint-ui实现登录注册
创建一个组件:注册组件 (register/index.vue.script.js.style.scss,register/header) 注册路由 router/index.js { path: ' ...
- 用vue开发一个app(4,一个久等了的文章)H5直播平台登录注册(1)
我上一篇关于vue的文章和这一篇时间隔了有点久了.最近终于写完了. 因为我一直想写个有点实绩的东西,而不是随便写一个教程一样东西.结合最近在项目中学到的经验和我的一点创意. 首先介绍下这是个什么! H ...
- vue.js+koa2项目实战(三)登录注册模态框
登录注册模态框 注: [Vue warn]: Do not use built-in or reserved HTML elements as component id: diaLog 原因:diaL ...
- vue.js实现用户评论、登录、注册、及修改信息功能
vue.js实现用户评论.登录.注册.及修改信息功能:https://www.jb51.net/article/113799.htm
- Vue学习之路之登录注册实例代码
Vue学习之路之登录注册实例代码:https://www.jb51.net/article/118003.htm vue项目中路由验证和相应拦截的使用:https://blog.csdn.net/wa ...
随机推荐
- 安装redis服务
wget http://download.redis.io/releases/redis-3.2.6.tar.gz tar -zxvf redis-3.2.6.tar.gzcd redis-3.2.6 ...
- markdown 【demo】
第一次开始 用markdown 编辑器 public class{ public static void main (String[] agrs){ System.out.println(" ...
- prometheus 基于DNS的目标发现
prometheus 基于DNS的目标发现 DNS服务发现依赖于查询A.AAAA或SRV DNS记录. 1.基于 SRV 记录发现 scrape_configs: - job_name: 'webap ...
- Jupyter Notebook 的安装使用以及 tree 路径变更
由于最近开始学习 Python,进而接触到一个十分强大的交互式编辑器 — Jupyter Notebook,用起来也非常顺手,于是记录一下相关的使用过程. 一.安装 Python: ①首先前往 pyt ...
- DirectX11--实现一个3D魔方(3)
前言 (2019/1/9 09:23)上一章我们主要讲述了魔方的旋转,这个旋转真是有毒啊,搞完这个部分搭键鼠操作不到半天应该就可以搭完了吧... (2019/1/9 21:25)啊,真香 有人发这张图 ...
- 隧道6in4 和隧道6to4(GNS3)
隧道6in4实验配置 拓扑图 Device Interface IP Address(IPv6) R1 F 0/0 10.1.81.1 F 0/1 2001:db8:cafe:81::10 R2 F ...
- java基于redis事务的秒杀实现
package com.vian.user.service; import org.junit.Test; import org.springframework.util.CollectionUtil ...
- Studio 5000编程:一种累计时间的编程方法
前言:在很多项目中,需要累计设备的运行.停机.故障时间,当然实现该功能的编程方法也是多种多样,各有千秋,不过有的方法累计误差会越来越大,比如:在连续任务里用定时器来累计时间,就存在一定的误差.本文分享 ...
- 中标麒麟龙芯平台--docker基础镜像制作
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 的出现为开发人员和运维人员带来了极大的便利.Docker在X86下常见的发行版Linux如Ub ...
- hibernate之一级缓存
缓存目的:提高效率. sql语句与数据库交互,返回数据组装成对象存入session缓存中.程序查询时,优先访问缓存中是否存在id相同对象. hibernate中session缓存(一级缓存)存在