国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

vue+express 構建后臺管理系統

wall2flower / 1399人閱讀

摘要:部署阿里云創建實例添加安全組允許端口使用連接服務器將項目壓縮上傳注表述能力有限如果有什么問題或探討可以加如果對你有幫助勞駕給個

一個vue+express 構建的后臺管理系統 說明: vue+express 構建的后臺管理系統,包括登錄、注冊、表格的增刪改查

github 在線

1.修復mysql無法訪問
搭建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.部署阿里云
創建實例

添加安全組允許3000端口

使用putty連接linux服務器,將express項目壓縮上傳
注:表述能力有限如果有什么問題或探討可以加qq:1726861462 如果對你有幫助勞駕給個star github

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96253.html

相關文章

  • Vue+Express全棧購物商城

    摘要:一前言提綱基于和框架寫的一個全棧購物商城,記錄項目過程中遇到的一些問題以及經驗和技巧。服務端技術棧登錄授權用認證機制,來實現登錄登出。服務器配置和緩存策略,根據不同的來代理。申請證書全站升級到,配置的協議。一、前言提綱 基于Vue和Express框架寫的一個全棧購物商城,記錄項目過程中遇到的一些問題以及經驗和技巧。 二、歷史版本 基于Vue-CLI2.0:點我查看 這個分支版本是一兩年前...

    Richard_Gao 評論0 收藏0
  • Vue+Express全棧購物商城

    摘要:一前言提綱基于和框架寫的一個全棧購物商城,記錄項目過程中遇到的一些問題以及經驗和技巧。服務端技術棧登錄授權用認證機制,來實現登錄登出。服務器配置和緩存策略,根據不同的來代理。申請證書全站升級到,配置的協議。 一、前言提綱 基于Vue和Express框架寫的一個全棧購物商城,記錄項目過程中遇到的一些問題以及經驗和技巧。 二、歷史版本 基于Vue-CLI2.0:點我查看這個分支版本是一兩...

    luzhuqun 評論0 收藏0
  • vue+node+mysql搭建個人博客(一)

    摘要:其中用來完成請求,將添加的原型上后就不需要再在每個需要使用它的頁面引入了每個頁面都相當于一個組件,文件以結尾,第一次啟動成功時看到的頁面就是組件,路徑。 學習筆記...在線地址:cl8023.com github 數據庫已改為mongodb 快速搭建 node 后端服務Github-quick-node-server 準備工作 安裝node,這是必須的 新版node自帶npm...

    peixn 評論0 收藏0
  • XBlog: Vue+Express+Mongodb的全棧可擴展的完整博客系統

    摘要:注冊成功后會返回注冊用戶的此就是上面說到的,用于用戶登陸的基礎,請保管好。 地址 https://github.com/billyhoomm...http://blog.billyhu.com 說明(Instructions) 本項目后臺基于express、mongodb,前臺基于Vue2.0全家桶、bootstrap、scss預編譯器以及一眾工具類插件 項目前后臺代碼在同一個目錄中...

    Salamander 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<