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代码
Feb 28 Javascript
jquery新的绑定事件机制on方法的使用方法
Apr 15 Javascript
一个JavaScript获取元素当前高度的实例
Oct 29 Javascript
jQuery添加和删除指定标签的方法
Dec 16 Javascript
jquery遍历函数siblings()用法实例
Dec 24 Javascript
浅析Jquery操作select
Dec 13 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
Feb 22 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 Javascript
Vue 项目代理设置的优化
Apr 17 Javascript
Vue调用后端java接口的实例代码
Oct 28 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
生成静态页面的PHP类
2006/07/15 PHP
推荐一篇入门级的Class文章
2007/03/19 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP多维数组排序array详解
2017/11/21 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
符合标准的js表单提交的代码
2007/09/13 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
一套SQL笔试题
2016/08/14 面试题
解释一下钝化(Swap out)
2016/12/26 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
幼儿园春游活动方案
2014/01/19 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
股东合作协议书
2014/09/12 职场文书
公司表扬信格式
2015/05/04 职场文书