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 相关文章推荐
学习ExtJS Panel常用方法
Oct 07 Javascript
jQuery的.live()和.die() 使用介绍
Sep 10 Javascript
百度移动版的url编码解码示例
Apr 29 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
Dec 05 Javascript
JavaScript实现自定义媒体播放器方法介绍
Jan 03 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 Javascript
angular2中Http请求原理与用法详解
Jan 11 Javascript
Vuex提升学习篇
Jan 11 Javascript
解决微信小程序防止无法回到主页的问题
Sep 28 Javascript
vue.js实现只能输入数字的输入框
Oct 19 Javascript
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 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
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
标准的js无缝滚动效果
2016/08/30 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
js闭包学习心得总结
2018/04/17 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
pygame加载中文名mp3文件出现error
2017/03/31 Python
vscode 远程调试python的方法
2017/12/01 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
python归并排序算法过程实例讲解
2020/11/04 Python
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
养殖人员的创业计划书范文
2013/12/26 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
银行竞聘报告范文
2014/11/06 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
报案材料怎么写
2015/05/25 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
HTML中的表格元素介绍
2022/02/28 HTML / CSS