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 相关文章推荐
this和执行上下文实现代码
Jul 01 Javascript
JS中表单的使用小结
Jan 11 Javascript
把字符串按照特定的字母顺序进行排序的js代码
Jan 28 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
JS建造者模式基本用法实例分析
Jun 30 Javascript
JavaScript实现将文本框的值插入指定位置的方法
Aug 13 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
Vue filter介绍及其使用详解
Oct 21 Javascript
node.js实现微信开发之获取用户授权
Mar 18 Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 Javascript
javascript实现倒计时效果
Feb 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支持页面回退的两种方法
2008/01/10 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
js 幻灯片的实现
2011/12/06 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
js实现消息滚动效果
2017/01/18 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
python利用线程实现多任务
2020/09/18 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
Python中Qslider控件实操详解
2021/02/20 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
超市重阳节活动方案
2014/02/10 职场文书
黄河象教学反思
2014/02/10 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android