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 相关文章推荐
jQuery实现公告文字左右滚动的实例代码
Oct 29 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
使用jQuery设置disabled属性与移除disabled属性
Aug 21 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
Sep 28 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
微信小程序 POST请求的实例详解
Sep 29 Javascript
微信小程序实现团购或秒杀批量倒计时
Nov 01 Javascript
vue实现文件上传功能
Aug 13 Javascript
jQuery实现开关灯效果
Aug 02 jQuery
JavaScript实现世界各地时间显示
Sep 07 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
一个SQL管理员的web接口
2006/10/09 PHP
什么是MVC,好东西啊
2007/05/03 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
nodejs下打包模块archiver详解
2014/12/03 NodeJs
jQuery实现瀑布流布局
2014/12/12 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
Python发送email的3种方法
2015/04/28 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Python实现打印实心和空心菱形
2019/11/23 Python
中文专业毕业生自荐书范文
2014/01/04 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
庆六一活动总结
2014/08/29 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
检讨书格式
2015/01/23 职场文书
计划生育工作总结2015
2015/04/03 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
化验室安全管理制度
2015/08/06 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
Python 文字识别
2022/05/11 Python
Redis 异步机制
2022/05/15 Redis
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers