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实现的分页函数
Feb 07 Javascript
jQuery timers计时器简单应用说明
Oct 28 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
推荐JavaScript实现继承的最佳方式
Nov 11 Javascript
使用JavaScript 编写简单计算器
Nov 24 Javascript
jQuery中html()方法用法实例
Dec 25 Javascript
jQuery定义背景动态切换效果的方法
Mar 23 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
Oct 10 Javascript
javascript使用 concat 方法对数组进行合并的方法
Sep 08 Javascript
Vue.js双向绑定操作技巧(初级入门)
Dec 27 Javascript
Vue组件Draggable实现拖拽功能
Dec 01 Javascript
layui框架与SSM前后台交互的方法
Sep 12 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
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
类似CSDN图片切换效果脚本
2009/09/17 Javascript
javascript Keycode对照表
2009/10/24 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
值得收藏的vuejs安装教程
2017/11/21 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
django页面跳转问题及注意事项
2019/07/18 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
python switch 实现多分支选择功能
2020/12/21 Python
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
便利店投资的创业计划书
2014/01/12 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
公司庆典欢迎词
2015/01/26 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
python中的sys模块和os模块
2022/03/20 Python