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 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
jQuery实现返回顶部效果的方法
May 29 Javascript
js获取及修改网页背景色和字体色的方法
Dec 29 Javascript
使用React实现轮播效果组件示例代码
Sep 05 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
Jan 13 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
详解Immutable及 React 中实践
Mar 01 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
Jul 25 Javascript
JS中判断字符串存在和非空的方法
Sep 12 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
Dec 16 Javascript
JS使用栈判断给定字符串是否是回文算法示例
Mar 04 Javascript
微信小程序实现列表的横向滑动方式
Jul 15 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
基于mysql的bbs设计(三)
2006/10/09 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
php数组编码转换示例详解
2014/03/11 PHP
开启PHP的伪静态模式
2015/12/31 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
php封装实现钉钉机器人报警接口的示例代码
2020/08/08 PHP
10个实用的脚本代码工具
2010/05/04 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
提升Python程序性能的7个习惯
2019/04/14 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
西班牙Polo衫品牌:Polo Club
2020/08/09 全球购物
英语教学随笔感言
2014/02/20 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
企业员工薪酬方案
2014/06/04 职场文书
四风查摆剖析材料
2014/10/10 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
关于安全的广播稿
2014/10/23 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
Docker安装MySql8并远程访问的实现
2022/07/07 Servers