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 相关文章推荐
基于MooTools的很有创意的滚动条时钟动画
Nov 14 Javascript
让table变成exls的示例代码
Mar 24 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
May 02 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
May 12 Javascript
Javascript中的神器——Promise
Feb 08 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
Vue使用vue-area-linkage实现地址三级联动效果的示例
Jun 27 Javascript
JavaScript控制浏览器全屏显示简单示例
Jul 05 Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
高性能js数组去重(12种方法,史上最全)
Dec 21 Javascript
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
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
Ionic快速安装教程
2016/06/03 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
详解jQuery中的事件
2016/12/14 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
vue 项目常用加载器及配置详解
2018/01/22 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python文件操作整理汇总
2014/10/21 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
致跳高运动员加油稿
2014/02/12 职场文书
大学生求职信
2014/06/17 职场文书
销售目标责任书
2014/07/23 职场文书
爬山的活动方案
2014/08/16 职场文书
助学贷款贫困证明
2014/09/23 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
2016猴年春节问候语
2015/11/11 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书