vue.js中实现登录控制的方法示例


Posted in Javascript onApril 23, 2018

本文实例讲述了vue.js中实现登录控制的方法。分享给大家供大家参考,具体如下:

vue中使用vue-router实现登录的控制在做后台管理系统中很常见,但是不想之前熟悉的流程那样,不过只要大家理解vue-router的使用也是很好实现的。

首先我们需要编写登录页面和主页面:

<template>
 <div class="login">
  <table width="100%" height="100%">
   <tr height="41"><td class="logintb" colspan="2"> </td></tr>
   <tr height="100%" class="loginbg">
    <td id="left_cont">
     <table width="100%" height="100%">
      <tr height="155"><td colspan="2"> </td></tr>
      <tr>
       <td width="20%" rowspan="2"> </td>
       <td width="60%">
        <table width="100%">
          <tr height="70"><td align="right"></td></tr>
          <tr height="274">
            <td valign="top" align="right">
              <img src="../../static/images/logo.png"/>
             </img/>
            </td>
          </tr>
        </table>
       </td>
       <td width="15%" rowspan="2"> </td>
      </tr>
      <tr><td colspan="2"> </td></tr>
     </table>
    </td>
    <td id="right_cont">
     <table height="100%">
      <tr height="30%"><td colspan="3"> </td></tr>
      <tr>
       <td width="30%" rowspan="5"> </td>
       <td valign="top" id="form">
          <table valign="top" width="50%">
            <tr><td colspan="2"><h4 style="letter-spacing:1px;font-size:16px;">管理后台</h4></td></tr>
            <tr><td>管理员:</td><td><input type="text" v-model.trim="username" value="" /></td></tr>
            <tr><td>密  码:</td><td><input type="password" v-model.trim="pwd" value="" /></td></tr>
            <!-- <tr><td>验证码:</td><td><input type="text" name="" value="" style="width:80px;"/></td></tr> -->
            <tr class="bt" align="center"><td> <input type="submit" @click="login" value="登陆" /></td><td> </td></tr>
          </table>
       </td>
       <td rowspan="5"> </td>
      </tr>
      <tr><td colspan="3"> </td></tr>
     </table>
    </td>
   </tr>
   <tr id="login_bot"><td colspan="2"><p>Copyright © 2017-{{getNowDate()}} Tujiawang</p></td></tr>
  </table>
 </div>
</template>
<script>
 import axios from 'axios'
 axios.defaults.withCredentials = true
 export default{
  data(){
   return {
    username:'',
    pwd:''
   }
  },
  methods: {
   login() {
    var params = new URLSearchParams();
    params.append('username', this.username);
    params.append('password', this.pwd);
    axios.post(this.HOST+'/home/system/login',params).then(res => {
      if(res.data.code ==1){
       sessionStorage.username = this.username;
       this.$router.push({path:'/main'})
      }else{
       alert('登录失败')
      }
    })
   },
   getNowDate(){
    var d = new Date();
    return d.getFullYear();
   }
  }
 }
</script>

上面的登录页面注意:login方法中登录成功需要写入sessionStorage以便路由进行判断

最主要的是路由文件中的内容:

import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const routes = [
  {
    path: '/',
    redirect: '/login'
  },
  {
    path: '/login',
    name: 'login',
    component: (resolve)=>{require(['../components/Login'],resolve)}
  },
  {
    path: '/main',
    name: 'main',
    component: (resolve)=>{require(['../components/Home'],resolve)},
    redirect: 'main/info',
    children: [{
        path: 'info',
        meta: {
          id:-1
        },
        component: (resolve)=>{require(['../components/Main'],resolve)}
      }
    ]
  },
  {
    path: '/vips',
    name: 'vips',
    component: (resolve)=>{require(['../components/Home'],resolve)},
    redirect: 'vips/list',
    children: [{
        path: 'list',
        meta: {
          id:0
        },
        component: (resolve)=>{require(['../components/VipsList'],resolve)}
      },
      {
        path: 'detail',
        meta: {
          id:0
        },
        component: (resolve)=>{require(['../components/VipsDetail'],resolve)}
      },
      {
        path: 'userlog',
        meta: {
          id:0
        },
        component: (resolve)=>{require(['../components/UserLog'],resolve)}
      }
    ]
  }
];
const router = new Router({
  routes
});
/**
 * to:表示目标路由
 * from:表示来源路由
 * next:表示执行下一步操作
 */
router.beforeEach((to, from, next) => {
  if (to.path === '/login') { // 当路由为login时就直接下一步操作
    next();
  } else { // 否则就需要判断
    if(sessionStorage.username){ // 如果有用户名就进行下一步操作
     next()
    }else{
     next({path: '/login'}) // 没有用户名就跳转到login页面
    }
  }
})
export default router

目前这个只是简单的处理,这种方法官方叫做路由守卫,还有一种写法就是在meta中添加是否需要登录的控制,在beforeEach中来判断,和上面方法一样的。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
javascript 动态生成私有变量访问器
Dec 06 Javascript
javascript 自动填写表单的实现方法
Apr 09 Javascript
编写针对IE的JS代码两种编写方法
Jan 30 Javascript
js图片延迟技术一般的思路与示例
Mar 20 Javascript
JavaScript中的原型继承基础学习教程
May 06 Javascript
图解prototype、proto和constructor的三角关系
Jul 31 Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 Javascript
AngularJS自定义指令详解(有分页插件代码)
Jun 12 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
Nov 02 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
js模拟实现烟花特效
Mar 10 Javascript
vue 数字翻牌器动态加载数据
Apr 20 Vue.js
JS中获取 DOM 元素的绝对位置实例详解
Apr 23 #Javascript
Vue前端开发规范整理(推荐)
Apr 23 #Javascript
Vue 中mixin 的用法详解
Apr 23 #Javascript
详解Vue2.0配置mint-ui踩过的那些坑
Apr 23 #Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
Apr 23 #Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
Apr 23 #Javascript
JavaScript变量声明var,let.const及区别浅析
Apr 23 #Javascript
You might like
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
信用卡效验程序
2006/10/09 PHP
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
python中kmeans聚类实现代码
2018/02/23 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
2014年合同管理工作总结
2014/12/02 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python