ssdd
This commit is contained in:
@@ -10,7 +10,7 @@ var detailRouter = require('./routes/detail');
|
|||||||
var app = express();
|
var app = express();
|
||||||
|
|
||||||
app.all("*", function (req, res, next) {
|
app.all("*", function (req, res, next) {
|
||||||
// res.header("Access-Control-Allow-Origin", "*");
|
res.header("Access-Control-Allow-Origin", "*");
|
||||||
//允许的header类型
|
//允许的header类型
|
||||||
res.header("Access-Control-Allow-Headers", "content-type");
|
res.header("Access-Control-Allow-Headers", "content-type");
|
||||||
//跨域允许的请求方式
|
//跨域允许的请求方式
|
||||||
|
|||||||
@@ -40,13 +40,13 @@ const list = [
|
|||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
title: '安徽新闻综合广播',
|
title: '安徽新闻综合广播',
|
||||||
play_url: 'https://lhttp-hw.qtfm.cn/live/4919/64k.mp3?app_id=web&ts=67a48ce9&sign=705831eba3a8ea2074db661d516d56c6',
|
play_url: 'https://manifest-gcp-us-east4-vop1.fastly.mux.com/mwtn4bTsPO00Qz3jZb701qBWsuPiKs1mZgFRp8xHyVYJVehgb72tQ2h4XqE390001IdsNHZxTrV3xBFfVlsl3yXhag/rendition.m3u8?cdn=cloudflare&expires=1739437200&skid=default&signature=NjdhZGI0OTBfNWNlMmJkYmU5NzA2YmI0NzdlYjdiZTE4MDdlYjk4YWEzNTdiN2QyYTNlNzQ0ZmIzZDIwZDBkMTA2NzQ2NDhhMg==&vsid=MkcG7J5VfKN5l4CZ58EvCqZxioR9ksmZvldmjbLQXdvRLCnOOzl2MSrK02ey00rXo8SEl9RfNCM5Y',
|
||||||
comment_list: []
|
comment_list: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
title: '安徽音乐广播',
|
title: '安徽音乐广播',
|
||||||
play_url: 'https://lhttp-hw.qtfm.cn/live/1947/64k.mp3?app_id=web&ts=67a48d37&sign=ab362f4e8002dac0e2a4b6307e1d377b',
|
play_url: 'https://manifest-gcp-us-east4-vop1.fastly.mux.com/mwtn4bTsPO00Qz3jZb701qBWsuPiKs1mZgFRp8xHyVYJVehgb72tQ2h4XqE390001IdsNHZxTrV3xBFfVlsl3yXhag/rendition.m3u8?cdn=cloudflare&expires=1739437200&skid=default&signature=NjdhZGI0OTBfNWNlMmJkYmU5NzA2YmI0NzdlYjdiZTE4MDdlYjk4YWEzNTdiN2QyYTNlNzQ0ZmIzZDIwZDBkMTA2NzQ2NDhhMg==&vsid=MkcG7J5VfKN5l4CZ58EvCqZxioR9ksmZvldmjbLQXdvRLCnOOzl2MSrK02ey00rXo8SEl9RfNCM5Yhttps://manifest-gcp-us-east4-vop1.fastly.mux.com/mwtn4bTsPO00Qz3jZb701qBWsuPiKs1mZgFRp8xHyVYJVehgb72tQ2h4XqE390001IdsNHZxTrV3xBFfVlsl3yXhag/rendition.m3u8?cdn=cloudflare&expires=1739437200&skid=default&signature=NjdhZGI0OTBfNWNlMmJkYmU5NzA2YmI0NzdlYjdiZTE4MDdlYjk4YWEzNTdiN2QyYTNlNzQ0ZmIzZDIwZDBkMTA2NzQ2NDhhMg==&vsid=MkcG7J5VfKN5l4CZ58EvCqZxioR9ksmZvldmjbLQXdvRLCnOOzl2MSrK02ey00rXo8SEl9RfNCM5Y',
|
||||||
comment_list: [
|
comment_list: [
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
|
|||||||
BIN
项目合集/电商App/shop_backend/config/config.zip
Normal file
BIN
项目合集/电商App/shop_backend/config/config.zip
Normal file
Binary file not shown.
@@ -3,8 +3,9 @@ module.exports = {
|
|||||||
connectionLimit : 100,
|
connectionLimit : 100,
|
||||||
host: 'localhost',
|
host: 'localhost',
|
||||||
user: 'root',
|
user: 'root',
|
||||||
password: 'lb714500',
|
password: 'lb714500.',
|
||||||
database: 'shop'
|
database: 'shop',
|
||||||
|
insecureAuth: true
|
||||||
},
|
},
|
||||||
jwt: 'Pc!0YQPA$57iksjA',
|
jwt: 'Pc!0YQPA$57iksjA',
|
||||||
rsa: {
|
rsa: {
|
||||||
@@ -14,7 +15,7 @@ module.exports = {
|
|||||||
filter: {
|
filter: {
|
||||||
login: '/user/login',
|
login: '/user/login',
|
||||||
add: '/user/add',
|
add: '/user/add',
|
||||||
// home: '/home/index',
|
home: '/home/index',
|
||||||
// type: '/type/list',
|
// type: '/type/list',
|
||||||
// banner: '/home/banner',
|
// banner: '/home/banner',
|
||||||
// recommend: '/home/recommend'
|
// recommend: '/home/recommend'
|
||||||
|
|||||||
@@ -1,15 +1,10 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
MIICXQIBAAKBgQC9eo8WIbWS5Yql06imlhrW0ZXhfaivPavdULvYLIxIKyUaOwMP
|
MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAhKWVTpcHLH3lteaX
|
||||||
FrPuHqqBNGnYOpiPHAKL+zxk2j4u+6jhB6VK1SODccSLxIRxd0HmSDS+hBzYRf4v
|
3eHKMmSYPybgV/bUExDY10POx2ZQyI+xe6XQSYtaA9FJBkoZLfQLXjYkCNhPiDJo
|
||||||
Kc8BLlhMrYhnLmcxCc+PJIIa4DfCZnu8FfQlu/5LljjpYN9kHOpHAT+xpQIDAQAB
|
saxd4wIDAQABAkBiOxFf2t5YJ3+2fmbWzP/k47QPiGW5HrQczmwWtkNqTBYNNxAx
|
||||||
AoGAaBRNSqvjkDg0K5iTGEZ1obBocv9STEhFAoGZXUpDGFVSwRDPQleHKHKB2A0R
|
vCkwygm61wN95krzGETFtmpkYYb8SM9JbiLxAiEA5qt/CuOJfu+Uu2bnvBnDwpxC
|
||||||
Yuv05w9MutWbPA7Bf49PGaTYfstFmFuyB2TDpUTqstHfsNDnCwvKOnEU5wbsm8Rr
|
U/IGuKZXlVKyvm2auHkCIQCTNn/UfFT0CojoNltBu49uwdNDwfptvQdaaj9UwsAq
|
||||||
yq4ParQk1Ba2ut8eHy2sDHNxPaC288tdsi6NnmM2iDe1UaECQQDnulXPZKGU5hLq
|
OwIgAkCqfPC75wFv8mSO3sdhogTkoO08I5F8SXkFRdbMLAECICIaR/ajbtKx9hFF
|
||||||
zylu7q0+zNPkvVvsjLlM1Y4v02nqiSGJIiFsVsse2WkNNWV9VYkEIDKv1iCsQSxR
|
NlK97nZL9HMH5smxNpjdcBpkmzutAiAvXVkx64QEtu/+UtHNo+zNR8ap5HB6a+ZM
|
||||||
8QFsurmpAkEA0VNVv0IPlfqA0jXaP/qMLasgp9hhNQ6fm3PkCd3tq8qZPNMd62hO
|
sB4t3z2WcA==
|
||||||
5V209xZZrAAFuzLadAom4PrUNRFiGERNnQJBAMmQTX/euqY4EpBorlOuDMgphs7a
|
-----END PRIVATE KEY-----
|
||||||
35C9P5lT0SBMtz6pFaChLY19WaV122j/303MDyilkTFeAoGTFygXiPO44DECQQDD
|
|
||||||
1/gtzRzP8WN9SS09Fqj4QVd4MhYgkeH6i18bbCvlwtPD+LHRgfHu3tFlK+AR8KNs
|
|
||||||
FZQVZToi3AqW7ACfO6hxAkB0L6aTsvrBXJtq1VdyBpWfkC9VdySUcBakd396iedU
|
|
||||||
BuEIpfsYfdw5xNUhZWhvDrZnDA32CphXHLNfCZUWYJ61
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
-----BEGIN PUBLIC KEY-----
|
-----BEGIN PUBLIC KEY-----
|
||||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9eo8WIbWS5Yql06imlhrW0ZXh
|
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAISllU6XByx95bXml93hyjJkmD8m4Ff2
|
||||||
faivPavdULvYLIxIKyUaOwMPFrPuHqqBNGnYOpiPHAKL+zxk2j4u+6jhB6VK1SOD
|
1BMQ2NdDzsdmUMiPsXul0EmLWgPRSQZKGS30C142JAjYT4gyaLGsXeMCAwEAAQ==
|
||||||
ccSLxIRxd0HmSDS+hBzYRf4vKc8BLlhMrYhnLmcxCc+PJIIa4DfCZnu8FfQlu/5L
|
|
||||||
ljjpYN9kHOpHAT+xpQIDAQAB
|
|
||||||
-----END PUBLIC KEY-----
|
-----END PUBLIC KEY-----
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
const mysql = require("mysql");
|
const mysql = require('mysql2');
|
||||||
const config = require("../config");
|
const config = require("../config");
|
||||||
|
|
||||||
class Mysql {
|
class Mysql {
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node-dev ./bin/www",
|
"dev": "npm run start",
|
||||||
|
"start": "node-dev ./bin/www ",
|
||||||
"doc": "apidoc -i routes/ -o doc/",
|
"doc": "apidoc -i routes/ -o doc/",
|
||||||
"build": "pm2 start ./bin/www --watch --name shop -i max"
|
"build": "pm2 start ./bin/www --watch --name shop -i max"
|
||||||
},
|
},
|
||||||
@@ -16,6 +17,7 @@
|
|||||||
"md5": "^2.2.1",
|
"md5": "^2.2.1",
|
||||||
"morgan": "~1.9.1",
|
"morgan": "~1.9.1",
|
||||||
"mysql": "^2.17.1",
|
"mysql": "^2.17.1",
|
||||||
|
"mysql2": "^3.12.0",
|
||||||
"node-rsa": "^1.0.7",
|
"node-rsa": "^1.0.7",
|
||||||
"pug": "2.0.0-beta11"
|
"pug": "2.0.0-beta11"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,11 @@
|
|||||||
const db = require("../mysql");
|
var NodeRSA = require('node-rsa')
|
||||||
const rsa = require("../utils/rsa");
|
//1.创建RSA对象,并指定 秘钥长度
|
||||||
|
var key = new NodeRSA({ b: 512 });
|
||||||
|
key.setOptions({ encryptionScheme: 'pkcs1' });//指定加密格式
|
||||||
|
|
||||||
// db.query({
|
//2.生成 公钥私钥,使用 pkcs8标准,pem格式
|
||||||
// sql: 'select * from user',
|
var publicPem = key.exportKey('pkcs8-public-pem');//制定输出格式
|
||||||
// data: [14]
|
var privatePem = key.exportKey('pkcs8-private-pem');
|
||||||
// }).then(success => {
|
|
||||||
// console.log(success)
|
|
||||||
// }).catch( err => {
|
|
||||||
// console.log(err)
|
|
||||||
// })
|
|
||||||
|
|
||||||
// await db.query({
|
console.log('公钥:\n',publicPem);
|
||||||
// sql: 'select * from user',
|
console.log('私钥:\n', privatePem);
|
||||||
// data: [14]
|
|
||||||
// })
|
|
||||||
|
|
||||||
var params = {
|
|
||||||
page: 1,
|
|
||||||
num: 4
|
|
||||||
}
|
|
||||||
|
|
||||||
var jiami = rsa.PublicKeyEncryption(params);
|
|
||||||
console.log(jiami)
|
|
||||||
@@ -10,7 +10,9 @@ module.exports = {
|
|||||||
if(req.headers.hasOwnProperty("data")) {
|
if(req.headers.hasOwnProperty("data")) {
|
||||||
try {
|
try {
|
||||||
req.headers.data = rsa.PrivateKeyDecryption(req.headers.data)
|
req.headers.data = rsa.PrivateKeyDecryption(req.headers.data)
|
||||||
if(req.url == config.filter.login || req.url == config.filter.add) {
|
if(req.url == config.filter.login || req.url == config.filter.add
|
||||||
|
|| req.url == config.filter.home
|
||||||
|
) {
|
||||||
next()
|
next()
|
||||||
} else {
|
} else {
|
||||||
if(req.headers.hasOwnProperty("token")) {
|
if(req.headers.hasOwnProperty("token")) {
|
||||||
@@ -32,6 +34,11 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
||||||
|
console.log("--------");
|
||||||
|
console.log("e --------: ", e);
|
||||||
|
console.log("--------");
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
status: 500,
|
status: 500,
|
||||||
message: '抱歉,公钥加密有误,请检查公钥'
|
message: '抱歉,公钥加密有误,请检查公钥'
|
||||||
|
|||||||
53
项目合集/电商App/shop_backend/utils/rsa.back.js
Normal file
53
项目合集/电商App/shop_backend/utils/rsa.back.js
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
const NodeRsa = require("node-rsa");
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
const config = require("../config");
|
||||||
|
|
||||||
|
class Rsa {
|
||||||
|
constructor() {
|
||||||
|
this.private_key = this.readFiles(this.getFilePath(config.rsa.private_key))
|
||||||
|
this.public_key = this.readFiles(this.getFilePath(config.rsa.public_key))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 公钥加密
|
||||||
|
PublicKeyEncryption(text) {
|
||||||
|
return (new NodeRsa(this.public_key)).encrypt(JSON.stringify(text), 'base64')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 公钥解密
|
||||||
|
PublicKeyDecryption(text) {
|
||||||
|
return JSON.parse((new NodeRsa(this.public_key)).decryptPublic(text, 'utf8'))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 私钥加密
|
||||||
|
PrivateKeyEncryption(text) {
|
||||||
|
return (new NodeRsa(this.private_key)).encryptPrivate(JSON.stringify(text), 'base64')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 私钥解密
|
||||||
|
PrivateKeyDecryption(text) {
|
||||||
|
return JSON.parse((new NodeRsa(this.private_key)).decrypt(text, 'utf8'))
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取path.join文件地址
|
||||||
|
* @param paths
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
getFilePath(paths) {
|
||||||
|
return path.join(__dirname, paths)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 读取文件数据
|
||||||
|
* @param path
|
||||||
|
* @returns {*}
|
||||||
|
*/
|
||||||
|
readFiles(path) {
|
||||||
|
return fs.readFileSync(path).toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = new Rsa();
|
||||||
@@ -7,6 +7,15 @@ class Rsa {
|
|||||||
constructor() {
|
constructor() {
|
||||||
this.private_key = this.readFiles(this.getFilePath(config.rsa.private_key))
|
this.private_key = this.readFiles(this.getFilePath(config.rsa.private_key))
|
||||||
this.public_key = this.readFiles(this.getFilePath(config.rsa.public_key))
|
this.public_key = this.readFiles(this.getFilePath(config.rsa.public_key))
|
||||||
|
|
||||||
|
this.pri_rsa = new NodeRsa(this.private_key,'pkcs8-private-pem')
|
||||||
|
this.pri_rsa.setOptions({ encryptionScheme: 'pkcs1' })
|
||||||
|
this.pri_rsa.setOptions({ environment: "browser" });
|
||||||
|
|
||||||
|
this.pub_rsa = new NodeRsa(this.public_key,'pkcs8-public-pem')
|
||||||
|
this.pub_rsa.setOptions({ encryptionScheme: 'pkcs1' })
|
||||||
|
this.pub_rsa.setOptions({ environment: "browser" });
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -28,7 +37,7 @@ class Rsa {
|
|||||||
|
|
||||||
// 私钥解密
|
// 私钥解密
|
||||||
PrivateKeyDecryption(text) {
|
PrivateKeyDecryption(text) {
|
||||||
return JSON.parse((new NodeRsa(this.private_key)).decrypt(text, 'utf8'))
|
return JSON.parse(this.pri_rsa.decrypt(text, 'utf8'))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user