一、Vue实现登陆时token存放到Vuex

1.登录页面

<template>
<div>
<h1>登录</h1>
{{ $store.state.token }}
<el-form ref="form" :rules="rules" :model="form" label-width="80px">
<el-form-item label="账号" prop="username">
<el-input v-model.trim="form.username" ></el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input type="password" v-model="form.password" ></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">登录</el-button>
</el-form-item>
</el-form>
</div>
</template> <script>
export default {
methods:{
onSubmit(){
this.$refs.form.validate((valid) => {
if (valid) {
this.$store.dispatch('setTokenAsync',this.form);
} else {
console.log('error submit!!');
return false;
}
});
}
},
data(){
return {
form:{},
rules: {
username: [
{ required: true, message: '请输入账号', trigger: 'blur' },
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' }
]
}
}
}
}
</script> <style lang="scss" scoped> </style>

2.store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import {login} from '@/api/login' Vue.use(Vuex) export default new Vuex.Store({
state: {
token:''
},
getters: {
},
mutations: {
setToken(state,token){
state.token=token;
}
},
actions: {
// context:就是外部文件文件中使用的 this.$store
// {commit}=context,要使用context中的属性,将要使用的属性解构出来
setTokenAsync({commit},form){
login(form).then(res=>{
commit('setToken',res.token);
}).catch(err=>{
console.log("err:",err);
})
}
}
})

3.api/login.js

import  request  from '@/utils/request';
import qs from 'qs'; export function login(data){
return request({
url:"/api/login.php",
method:'post',
data: qs.stringify(data)
})
}

4.utils/request.js

import axios from "axios";
import { Message } from 'element-ui'; // export 可以有无数个
export const API_URL='http://www.ggqadminapi.com' // 创建实例时设置配置的默认值
var instance = axios.create({
baseURL: API_URL
}); // 添加响应拦截器
instance.interceptors.response.use(function (response) {
console.log(response);
let res=response.data;
if(res.code!=0){
Message.error(res.message);
return Promise.reject(res.message);
}
// 对响应数据做点什么
return res;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
}); //export defaulf 默认导出,一个页面只能有一个
export default instance;

5.效果实现

Vue实现登陆时token存放到Vuex的更多相关文章

  1. koa2+vue实现登陆以及是否登陆控制

    这里我们先说说登陆以及登陆状态控制需要的插件jsonwebtoken,jsonwebtoken就可以实现token的生成与反向解密出用户数据.安装步骤: npm install jsonwebtoke ...

  2. [前端] VUE基础 (9) (element-ui、axios、Vuex)

    一.element-ui的使用 官方网页:https://element.eleme.cn/#/zh-CN 1.安装element-ui (venv) D:\pycharm_workspace\vue ...

  3. 登陆时不同浏览器获取session存在的相关疑问?

    问题1:在同一个电脑上,登陆成功后,将登陆信息存放到session域中后,使用另一个浏览器访问时,能否获取这个session域中的值? request.getSession().setAttribut ...

  4. 前端笔记之Vue(四)UI组件库&Vuex&虚拟服务器初识

    一.日历组件 new Date()的月份是从0开始的. 下面表达式是:2018年6月1日 new Date(2018, 5, 1); 下面表达式是:2018年5月1日 new Date(2018, 4 ...

  5. 从数据库得到的结果集存放到List集合中

    一.业务阐述 在开发中查询的数据库结果集,既要连接数据库.执行数据库操作.关闭数据库,还要把结果集的记录人为的设置到自己封装的DAO中等一系列的重复代码. 本文主要是想解决:用户只需要得到数据库连接, ...

  6. 请求时token过期自动刷新token

    1.在开发过程中,我们都会接触到token,token的作用是什么呢?主要的作用就是为了安全,用户登陆时,服务器会随机生成一个有时效性的token,用户的每一次请求都需要携带上token,证明其请求的 ...

  7. 这两天老是有兄弟问到Vue的登陆和注册,登陆成功留在首页,没有登录回到登录页面,现在我用最简单实用的方法实现(两分钟技就看懂)

    其实登录注册,并且登录一次保持登录的状态,是每个项目都需要实现的功能. 网上也有很多的方法,不过,不是通俗易懂,在这里说一下我自己的方法,非常简单实用核心就是用localStorage存.取数据,这样 ...

  8. LINUX使用SSH远程终端时,如何将运行时间长的程序在后台挂起,下次SSH登陆时继续使用同一个SHELL?

    我在某个平台上购买了一个云服务器,LINUX操作系统无图形化界面,硬盘空间较小.虽然在平台上可以通过其自带网页版VNC界面登陆SHELL进而操控云主机,但是每次需要操控都得打开网页登陆进平台,然后再进 ...

  9. vite搭建vue项目-集成别名@、router、vuex、scss就是这样简单

    为什么要使用vite 当我们开始构建越来越大型的应用时, 需要处理的 JavaScript 代码量也呈指数级增长. 包含数千个模块的大型项目相当普遍. 这个时候我们会遇见性能瓶颈 使用 JavaScr ...

  10. SYSDBA身份登陆时可以修改其他用户的密码

    在以SYSDBA身份登陆时可以修改其他用户的密码,比如:SQL> alter user user01 identified by user10;用户已更改.这个是把USER01用户密码修改为US ...

随机推荐

  1. Mac 终端下svn常用命令的使用

    svn基本的操作流程 刚刚进入一个新的公司,让我接手一个正在进行的项目,我打开终端写下了:svn co svn://192.168.1.1/pro/domain 然后就可以在当前目录里面找到一个叫do ...

  2. 在Mac上使用docker运行gitlab-ce

    首先创建相关路径,并设置权限: mkdir -p /opt/gitlab/{config,data,logs} sudo chmod -R 777 /opt/gitlab 使用如下docker-com ...

  3. elasticsearch RestHighLevelClient 关于index的常用操作

    对于索引的操作是基于***IndexRequest来进行操作的.例如:CreateIndexRequest.DeleteIndexRequest.GetIndexRequest 常见操作中还有校验索引 ...

  4. Java集合源码--ArrayList的可视化操作过程

    关于ArrayList的元素插入.检索.修改.删除.扩容等可视化操作过程 还有关于ArrayList的迭代器.线程安全和时间复杂度 1. 底层数据结构 基于动态数组实现,内部维护一个Object[]数 ...

  5. Docker修改Devicemapper存储驱动为Direct-lvm模式

    一.说明 Device mapper是基于内核的框架,支持Linux上许多高级卷管理技术.Docker中devicemapper存储驱动程序利用此框架的精简配置和快照功能进行镜像和容器管理. devi ...

  6. 今天遇到了 X-Y PROBLEM

    什么是X-Y 问题呢? 以下参考来自于耗子叔博客: 想解决问题X 他觉得Y可能是解决X的方法 但是他不知道Y应该怎么做 于是他去问别人Y应该怎么做? X-Y Problem 最大的严重问题就是:在一个 ...

  7. ArkUI-X通过Stage模型开发Android端应用指南(二)

    StageApplication初始化支持以下三种方式 1. 通过继承StageApplication的方式进行初始化 import ohos.stage.ability.adapter.StageA ...

  8. ET服务端分布式部署

    环境:Centos7+ET5.0+Mac(本地) 一:服务器部署 1:服务端代码调整: 有一个组件 CoroutineLockComponent只在 AllServer中有加载,部署分布式时,有需要该 ...

  9. VS2019 添加时没有区域(Areas) 通用-MVC 下也没有域

    https://www.cnblogs.com/shijiehaiyang/p/13035250.html VS2019 似乎和之前版本不同,想要直接添加区域时,发现没有这一个选择1.按网上所提供意见 ...

  10. 485集线器 4口485集线器 4口485 HUB

    485集线器ZLAN9440是一款上海卓岚生产的可通过一路RS485/232主口扩展出4路RS485从口的工业级隔离型4口RS485集线器.可以有效的实现RS485网络的中继.扩展与隔离.ZLAN94 ...