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代码
Jan 01 Javascript
JavaScript 克隆数组最简单的方法
Feb 12 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
May 24 Javascript
JavaScript基础知识之方法汇总结
Jan 24 Javascript
js实现上传图片及时预览
May 07 Javascript
基于Turn.js 实现翻书效果实例解析
Jun 20 Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
Oct 04 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
js判断一个对象是数组(函数)的方法实例
Dec 19 Javascript
微信小程序tab左右滑动切换功能的实现代码
Feb 08 Javascript
js实现弹框效果
Mar 24 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
php购物网站支付paypal使用方法
2010/11/28 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
JS中字符串trim()使用示例
2015/05/26 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
大学生毕业自我鉴定范文
2014/02/03 职场文书
欢迎领导检查标语
2014/06/27 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
个人贷款收入证明
2014/10/26 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏