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 相关文章推荐
比较简单的异步加载JS文件的代码
Jul 18 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
jquery+html5烂漫爱心表白动画代码分享
Aug 24 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 Javascript
深入浅析JavaScript中的作用域和上下文
Mar 26 Javascript
限制复选框最多选择项的实现代码
May 30 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
js实现九宫格的随机颜色跳转
Feb 19 Javascript
vue 过滤器filter实例详解
Mar 14 Javascript
浅谈webpack4 图片处理汇总
Sep 12 Javascript
Vuex 快速入门(简单易懂)
Sep 20 Javascript
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
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
PHP爆绝对路径方法收集整理
2012/09/17 PHP
PHP检测用户语言的方法
2015/06/15 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
如何表示python中的相对路径
2020/07/08 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
什么是属性访问器
2015/10/26 面试题
高中自我鉴定范文
2013/11/03 职场文书
小学生演讲稿
2014/01/12 职场文书
电钳工人个人求职信
2014/05/10 职场文书
小学生倡议书范文
2014/05/13 职场文书
工作失职检讨书500字
2014/10/17 职场文书