vue+express 构建后台管理系统的示例代码


Posted in Javascript onJuly 19, 2018

一个vue+express 构建的后台管理系统

说明:

vue+express 构建的后台管理系统,包括登录、注册、表格的增删改查

github 在线

搭建vue项目:

1.安装vue-cli脚手架

npm install -g vue-cli

2.创建基于webpack模版的项目

vue init webpack my-express

3.安装包依赖并运行

cd my-express
npm install
npm run dev

vue项目基于iview-admin改造的

通过应用生成器工具 express创建一个应用的骨架:

1.连接数据库

在config创建db.js

var mysql = require("mysql");
var connection = mysql.createConnection({
  host:"",
  port: 3306,
  user:"root",
  password:"",
  database:"",
  useConnectionPooling: true
});

function query(sql,data,callback){
  // connection.connect()
  // pool.getConnection(function(err,connection){
    connection.query(sql,data,function (err,rows) {
      callback(err,rows);
      // connection.release();
      // connection.end() 
    });
  // });
}

exports.query = query;

在routers路由文件下引入

var express = require('express');
var router = express.Router();
var db = require("../config/db");
const jwt = require('jsonwebtoken')
const token = require("../config/token")
var data={data:'',meta:{code:'200',message:''}}
/* GET users listing. */
router.post('/add', function(req, res, next) {
  let username = req.body.username;
  let password = req.body.password;
  db.query("SELECT username FROM users where username=(?)",[username],function(err,rows){
    console.log(err,rows)
    if(rows.length>0){
      data={data:'',meta:{code:'500',message:'用户名存在'}}
      res.send(data)
    }else{
      db.query("INSERT INTO `users` (`username`,`password`) VALUES (?,?)",[username,password],function(err,rows){
        data={data:'',meta:{code:'200',message:'注册成功'}}
        res.send(data)
      });  
    }
  });
});

2.加入token验证

安装jsonwebtoken

npm install jsonwebtoken

在config创建token.js

const crypto = require('jsonwebtoken')
const secret = "JWT-TOKEN"
const token={
  createToken:function(obj,timeout){
    // Token 数据
    let payload = {
      name: obj.username,
      admin: true
    };
    // 密钥
    
    // 签发 Token
    let tokens = crypto.sign(payload, secret, { expiresIn: 3600})
    return tokens;
  },
  decodeToken:function(tokens){
    console.log(tokens)
    let res = false;
    crypto.verify(tokens, secret , function(err,decoded) {
      if(err){
        res = {'flag':false,'decoded':decoded}
      }else{
        res = {'flag':true,'decoded':decoded}
      }
      })
    return res;
  },
  checkToken:function(token){
    var resDecode=this.decodeToken(token);
    if(!resDecode){
      return false;
    }
    //是否过期
    var expState=(parseInt(Date.now()/1000)-parseInt(resDecode.payload.created))>parseInt(resDecode.payload.exp)?false:true;
    if(resDecode.signature===resDecode.checkSignature&&expState){
      return true;
    }
    return false;
  }
};
module.exports=exports=token;

在app.js验证token是否过期,过去返回401

app.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header("Access-Control-Allow-Headers", "Content-Type, access_token, X-Requested-With")
  // res.header("Content-Type", "application/json;charset=utf-8");
  console.log(req.originalUrl,'11111')
  if(rouetpass.indexOf(req.originalUrl) > -1 || req.originalUrl.split('/').indexOf('static') > -1){

    next()
  }else{
    if (req.method != "OPTIONS"){
      var accesstoken = req.headers['access_token'];
      let datatoken = token.decodeToken(accesstoken)
      // console.log(data)
      if(datatoken.flag){
        next()
      }else{
        data.meta.code=401;
        res.send(data) 
      }
    }else{
      next()
    }
  }
});

项目部署:

1.将vue项目打包后放在express项目public文件夹下,通http://localhost:3000即可以访问。

2.部署阿里云

创建实例

vue+express 构建后台管理系统的示例代码

添加安全组允许3000端口

vue+express 构建后台管理系统的示例代码

使用putty连接linux服务器,将express项目压缩上传

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 Javascript
jquery 注意事项与常用语法小结
Jun 07 Javascript
jquery.validate使用攻略 第五步 正则验证
Jul 01 Javascript
异步加载script的代码
Jan 12 Javascript
js获取当前页面的url网址信息
Jun 12 Javascript
js实现拖拽效果(构造函数)
Dec 14 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 Javascript
微信小程序-详解数据缓存
Nov 24 Javascript
整理关于Bootstrap过渡动画的慕课笔记
Mar 29 Javascript
微信小程序的生命周期的详解
Oct 19 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
微信小程序表单弹窗实例
Jul 19 #Javascript
vue用递归组件写树形控件的实例代码
Jul 19 #Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 #Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
Jul 19 #Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 #Javascript
浅谈Vue初学之props的驼峰命名
Jul 19 #Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 #Javascript
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
用PHP制作的意见反馈表源码
2007/03/11 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
Python中使用PDB库调试程序
2015/04/05 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
python SVD压缩图像的实现代码
2019/11/05 Python
python烟花效果的代码实例
2020/02/25 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
英语专业个人求职信范文
2014/02/01 职场文书
运动会稿件300字
2014/02/14 职场文书
挂职自我鉴定
2014/02/26 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
博物馆观后感
2015/06/05 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
Java实现学生管理系统(IO版)
2022/02/24 Java/Android
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python