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 相关文章推荐
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
Bootstrap零基础入门教程(三)
Jul 18 Javascript
js运动事件函数详解
Oct 21 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
Nov 09 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
jQuery实现导航回弹效果
Feb 27 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 jQuery
AngularJS发送异步Get/Post请求方法
Aug 13 Javascript
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
在Express中提供静态文件的实现方法
Oct 17 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实现通用alert函数的方法
2015/03/11 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
Python开发编码规范
2006/09/08 Python
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
基于Python的接口测试框架实例
2016/11/04 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
python程序文件扩展名知识点详解
2020/02/27 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
美国在线工具商店:Acme Tools
2018/06/26 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
2013年员工自我评价范文
2013/12/27 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
护士节策划方案
2014/05/19 职场文书
教师考核材料
2014/05/21 职场文书
销售会议开幕词
2015/01/28 职场文书
2015年幼师工作总结
2015/04/28 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python