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 相关文章推荐
js一组验证函数
Dec 20 Javascript
JQuery select标签操作代码段
May 16 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
Dec 04 Javascript
JavaScript中实现map功能代码分享
Jun 11 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
js推箱子小游戏步骤代码解析
Jan 10 Javascript
代码分析vue中如何配置less
Sep 28 Javascript
js实现的格式化数字和金额功能简单示例
Jul 30 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 Javascript
JavaScript中的函数式编程详解
Aug 22 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 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
第五节--克隆
2006/11/16 PHP
php 无限极分类
2008/03/27 PHP
PHP生成带有雪花背景的验证码
2008/09/28 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
python模拟表单提交登录图书馆
2018/04/27 Python
python实现简单的文字识别
2018/11/27 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
HTML5之语义标签介绍
2016/07/07 HTML / CSS
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
《中国的气候》教学反思
2014/02/23 职场文书
项目投资合作意向书
2014/07/29 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
职工食堂管理制度
2015/08/06 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
Python答题卡识别并给出分数的实现代码
2021/06/22 Python