技术标签: Vue2 webpack html5 vue 前端 es6
<el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules" label-width="0px" class="login_form">
<!-- 用户名 -->
<el-form-item prop="username">
<el-input v-model="loginForm.username" ></el-input>
</el-form-item>
<!-- 密码 -->
<el-form-item prop="password">
<el-input v-model="loginForm.password" type="password"></el-input>
</el-form-item>
<!-- 按钮区域 -->
<el-form-item class="btns">
<el-button type="primary" @click="login">登录</el-button>
<el-button type="info" @click="resetLoginForm">重置</el-button>
</el-form-item>
</el-form>
说明:
<script>
export default {
data() {
return {
// 登录表单的数据绑定对象loginForm
loginForm: {
username: 'root',
password: '123456'
},
// loginFormRules为element-ui表单验证规则
loginFormRules: {
// 验证用户名是否合法
username: [
{ required: true, message: '请输入登录名称', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
],
// 验证密码是否合法
password: [
{ required: true, message: '请输入登录密码', trigger: 'blur' },
{ min: 6, max: 15, message: '长度在 6 到 15 个字符', trigger: 'blur' }
]
}
}
},
methods: {
// 表单重置方法
resetLoginForm() {
//重置表单
this.$refs.loginFormRef.resetFields()
},
//验证登陆信息并存储Token至本地---------核心代码开始
login() {
//this.$refs.loginFormRef绑定表单对象并使用validate方法
this.$refs.loginFormRef.validate(async valid => {
//valid判断表单验证是否通过,未通过则直接返回不向服务器请求数据
if (!valid) return
//此处涉及ES6解构赋值,也可使用res直接接收await返回数据再对数据进行处理
const { data: res } = await this.$http.post('login', this.loginForm)
//判断状态码若状态码不存在弹出提示失败信息,状态码为200则提示登陆成功
if (res.meta.status !== 200) return this.$message.error('登录失败!')
this.$message.success('登录成功')
// 登录成功之后将token保存到客户端的 sessionStorage 中,项目中除了登录之外的其他API接口,必须在登录之后才能访问
window.sessionStorage.setItem('token', res.data.token)
// 登录成功后使用vue Router的编程式路由将页面跳转到首页
this.$router.push('/home')
})
}
}
}
</script>
router.beforeEach((to, from, next) => {
//如果前往登陆页面放行
if (to.path === '/login') return next()
//读取客户端sessionStorage 中存储的Token
const tokenStr = window.sessionStorage.getItem('token')
//判断Token是否存在,存在则放行,不存在则需进行登录
if (!tokenStr) return next('/login')
next()
})
Authorization
字段提供 token
令牌(此处与后端开发人员进行约定)axios.interceptors.request.use(config => {
//此处读取上文存储的token并设置请求头
config.headers.Authorization = window.sessionStorage.getItem('token')
// 这里需要注意,必须return config才能生效
return config
})
logout() {
window.sessionStorage.clear()
this.$router.push('/login')
}
至此一个完整的系统登录退出功能以完成!!!
文章浏览阅读2.1k次,点赞3次,收藏6次。2021年中职组“网络空间安全”赛项一.江苏省竞赛任务书二.任务书解析:三.不懂的可以私信博主!一.江苏省竞赛任务书一、竞赛时间8:00—11:00 共计3小时二、竞赛阶段竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值第①阶段:单兵模式系统渗透测试任务一:攻击日志分析任务二:系统漏洞利用与提权任务三:代码审计任务四:web安全渗透测试任务五:Linux操作系统渗透测试任务六:端口扫描Python渗透测试备战阶段 休息20分钟第②阶段:分组对抗 系统加固 15分钟_2021年江苏省职业院校技能大赛网络信息安全赛项中职组
文章浏览阅读1k次。Python3爬取猫眼电影信息import jsonimport requestsfrom requests.exceptions import RequestExceptionimport reimport time#爬取猫眼电影信息def get_one_page(url): #增加了User-Agent识别,需要在headers中添加User-Agent参数。 ..._python3爬取猫眼
文章浏览阅读620次。文章目录前言什么是Docker&为什么用它Docker基本概念Docker镜像Docker与虚拟机的差别DockerHub容器总结前言兄弟们,明天我就期末考试了,给我来一波祝福~!!!老规矩,什么是Docker,这玩意能干嘛,有什么用,为什么要用它,有什么优势。在学习一个新东西之前我们都需要带着这些疑问开始进入学习,那么今天的这篇博客主要就是讲解一些基本的概念,这样一来对于Docker的学习就非常快了,同时这也是我本人的笔记整理。那么接下来就开始一一解答上面提到的问题。本章节为纯理论,后面才是_if [ type docker]
文章浏览阅读1.3k次。定义一个person类,声明属性id,name.addresspublic class Person { private int id; public int Id { get { return id; } set { id = value; } } _datatable杞塋ist
文章浏览阅读6.2k次。浅谈ARM Cortex-M0 一、引言 ARM公司在2009年初发布了其嵌入式处理器系列中最小型、最低功耗的CortexM0处理器。CortexM0低功耗、高性能与极精简程序代码的特性,能应用于各种微控制器(MCU)中,并可让研发业者以8位的价位创造32位的效能,并进一步将传统的8位和16位的处理器推进至更高效能、更低功耗的32位处理器。二、关于CortexM0 AR..._m0的体系结构
文章浏览阅读728次。1 Flash在SOPC中的作用 Flash在SOPC中的作用主要表现在两方面:一方面,可用Flash来保存FPGA的配置文件,从而可以省去EPCS芯片或解决EPCS芯片容量不够的问题。当系统上电后,从Flash中读取配置文件,对FPGA进行配置。另一方面,可用Flash来保存用户程序。对于较为复杂的SOPC系统,用户程序一般较大,用EPCS来存储是不现实的。系统完成配置后,将Flash中的用户程序转移到外接RAM或片内配置生成的RAM中,然后系统开始运行。 2 Flash编程_sopc中为什么加上flash就什么现象也没了
文章浏览阅读491次。关于这些建议这些建议并不适用于所有的项目这些建议是基于我与3-20人的小团队项目经验总结出来的结构、可重复使用性、明晰度都是有价的——团队规模和项目规模决定了是否值得付这个价。一些建议也许公然违抗了传统的Unity开发。例如:使用专业化的组合而不是使用实例就很不像Unity的作风,价格也很高。即使看上去挺疯狂的,但我还是看到了这些建议给开发者带来了利益。 过程方面_unity游戏中的一些规范和优化建议
文章浏览阅读2.5k次。废话不多说,直接进入正题~~~首先引入 pod 'WKWebViewJavascriptBridge'这部分代码是写死的主要用的是这部分代码 主要用的是这部分代码 主要用的是这部分代码 可以直接放在script标签下,也可以创建一个bridge.js function setupWKWebViewJavascriptBridge(callback) { if (window.WKWebViewJavascriptBridge..._wkwebviewjavascriptbridge
文章浏览阅读69次。转自:http://www.xiedaima.cn/read.php/72.htm提高asp.net应用程序性能的常说的神话 有用的提高asp.net应用程序性能的技巧 Asp.net应用程序操作数据库的建议 Asp.net中的缓存与后台处理进程 现在写一个asp.net的web应用程序变得非常的简单,许多的程序员都不愿花时间去构建一个性能良好的应用程序。本文将要讨论...
文章浏览阅读2.2k次。BigDecimal:BigDecimal bb =list.stream().map(Plan::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add);int、double、long:double max = list.stream().mapToDouble(User::getHeight).sum();补充:java8-Stream流之数值函数..._java reduce求和
文章浏览阅读132次。Cannot find any provider supporting AES/CBC/PKCS7Padding关于“Cannot find any provider supporting AES/ECB/PKCS7Padding”问题的解决方案commons-codec-1.7.jarCommons Codec 1.14 Download bcprov-ext-jdk16-1.4..._descryptoserviceprovider 中的密钥是8位; rijndaelmanaged 中的密钥是32位。
文章浏览阅读986次。一分钟AI美剧《硅谷》再现NIPS大会,英特尔请来Flo Rida暖场AI演讲互联网大佬的乌镇饭局刷爆朋友圈博通正式启动恶意收购:周一提交高通新董事提名深圳无人驾驶公交车上路试运营李彦宏称无人驾驶将会消灭酒驾雷军:AI将全面赋能小米的各项场景和服务刘强东乌镇发言:要在四川建185个无人机机场工信部:中国人工智能产业初步