当前位置: 首页 > wzjs >正文

网站建设 数据库连接百度推广二级代理商

网站建设 数据库连接,百度推广二级代理商,柳州本地做网站的公司,深圳网站的建设1、Vue2 vue2主要功能包括登入、退出、用户权限、表格的增删改查、文件下载。 Vue2项目地址https://gitee.com/www6/finance1.git 2、node.js编写后端接口 2.1、项目初始化 后端地址https://gitee.com/www6/finance-backend.git 创建项目 npm install -g koa-generator …

1、Vue2

vue2主要功能包括登入、退出、用户权限、表格的增删改查、文件下载。

Vue2项目地址icon-default.png?t=N7T8https://gitee.com/www6/finance1.git

2、node.js编写后端接口

2.1、项目初始化

后端地址icon-default.png?t=N7T8https://gitee.com/www6/finance-backend.git

创建项目

npm install -g koa-generator  //安装koa-generator
koa2 创建项目名

在utils/index.js封装token

var jwt = require('jsonwebtoken');
const { secret, tokenExpires } = require('../conf');exports.createToken = (user) => {return jwt.sign(user, secret, {expiresIn: tokenExpires,});
};exports.vertifyToken = (token) => {try {var decoed = jwt.verify(token, secret);} catch (e) {} finally {return decoed;}
};
exports.getUser = (token) => {return jwt.decode(token, secret);
};

响应处理

// 响应处理  app.js
app.context.success = function (data) {this.body = {code: 20000,data,};
};
app.context.faild = function (data) {this.body = {code: 102,data,};
};
app.context.tokenExpires = function (data) {this.body = {code: 603,data,};
};

创建成功之后,接着下一步。

2.2、建立Mysql链接

根目录新建models/db.js文件

var mysql = require('mysql');
const { db } = require('../conf');
var pool = mysql.createPool(db);exports.query = function(sql,params=[]) {if (!params) {console.log('当前查询参数没有值,请查看',params);}return new Promise((resolve,reject)=>{pool.getConnection(function (err, connection) {if (err) throw err; // not connected!// Use the connectionconnection.query(sql,params, function (error, results, fields) {// 调试logconsole.log(`${sql}==>${params}=数据=>${results}`);connection.release();// Handle error after the release.if (error) {console.log('db出现异常:',error)return reject(error)}resolve(results);// Don't use the connection here, it has been returned to the pool.});});});
}

根目录下新建conf.js文件

exports.db = {connectionLimit: 10,host: "localhost",user: "xxx",password: "xxx",database: "xxx",
};exports.secret = "xxx";exports.tokenExpires = 6000 * 3;exports.whiteList = ["/user/login", "/user/logout"];

2.3、登入

新建routes/user.js文件

const router = require('koa-router')()
const { doLogin} = require('../controllers/user');router.prefix('/user')
.post('/login',doLogin)module.exports = router

新建controllers/user.js文件

const {findUserByAccount} = require('../models/user');
const { createToken, vertifyToken, getUser } = require('../utils');exports.doLogin = async (ctx, next) => {let { account, password } = ctx.request.body;if (!account || !password) {return ctx.faild('必须传递用户名和密码');}const res = await findUserByAccount(account);if (res.length === 0) {return ctx.faild('用户名或者密码不存在');}let user = res[0];if (user.password != password) {return ctx.faild('用户名或者密码不存在');}const saveUser = {id: user.id,account: user.account,// 权限type: user.role_id,};// 生成tokenconst token = createToken(saveUser);ctx.success({token,});
};;

新建models/user.js文件

const { query } = require('../models/db');exports.findUserByAccount = account => query('select * from user where account = ?',[account]);

2.4、中间件处理

const { whiteList } = require('../conf');
const { vertifyToken, getUser } = require('../utils');exports.checkLogin = async (ctx, next) => {// 非登录、退出// 需要检查的if (!whiteList.includes(ctx.url)) {const { token } = ctx.headers;let tokenIndex = ctx.blackTokenList.indexOf(token);// 验证tokenif (!vertifyToken(token)) {// 弹出这个元素,不允许访问,重新获取tokenctx.blackTokenList.splice(tokenIndex, 1);return ctx.tokenExpires('无效token,请登录再试!');} else {// 黑名单: 退出后的tokenif (tokenIndex !== -1) return ctx.tokenExpires('token已经失效');// 解析token并存储到ctx的上面, ctx.state 本次请求的共享数据ctx.state.user = getUser(token);}}await next();
};
// app.js全局引入const { responseHandler, checkLogin } = require('./middlewares');
app.use(checkLogin);

2.5、用户详情

router.prefix('/user')
.get('/info',getInfo)exports.getInfo = async (ctx) => {const user = ctx.state.user;if (!user) return ctx.faild('用户信息获取失败!');const { id } = user;const res = await findUserById(id);const dbUser = res[0];if (!dbUser) return ctx.faild('用户信息不存在,或者已经被删除');ctx.success({info: '获取成功!',roles: [{ name: dbUser.role_name }],});
};exports.findUserById = id => query('select * from user where id = ?',[id]);

2.6、退出

router.prefix('/user')
.post('/logout',logout)// 退出后的token  在app.js全局添加
app.context.blackTokenList = [];exports.logout = async (ctx) => {ctx.blackTokenList.push(ctx.headers.token);return ctx.tokenExpires('退出成功');
};


文章转载自:

http://5bjBdVMJ.byywt.cn
http://mm0gMmEJ.byywt.cn
http://FuOw6SJm.byywt.cn
http://NALn4m2T.byywt.cn
http://wpfmbC9U.byywt.cn
http://Xg2Dsj8c.byywt.cn
http://k2ZZ9RUL.byywt.cn
http://VcygNBWN.byywt.cn
http://nN6vcphF.byywt.cn
http://Q4M0JDXj.byywt.cn
http://zpCkZ3Cp.byywt.cn
http://XOQsQLVk.byywt.cn
http://IeBtOEHW.byywt.cn
http://XSjSi0So.byywt.cn
http://J6XedEKS.byywt.cn
http://vN3pAQzR.byywt.cn
http://yjRxcGiT.byywt.cn
http://muRa2CV3.byywt.cn
http://Ks4rnDgo.byywt.cn
http://9BKkxROw.byywt.cn
http://UIeRnqvj.byywt.cn
http://yoGmOWO2.byywt.cn
http://4yY6p99T.byywt.cn
http://jsiKWCe7.byywt.cn
http://wkXqO2Rz.byywt.cn
http://01polpz1.byywt.cn
http://ZTY4ilXr.byywt.cn
http://OQoV1gcG.byywt.cn
http://rnOqoc8O.byywt.cn
http://cLz5zu12.byywt.cn
http://www.dtcms.com/wzjs/693223.html

相关文章:

  • 网站建设技术可行性做旅游攻略的网站代码
  • 做网站什么系统简单产品市场推广途径
  • 做企业形象网站网站建设运维情况
  • 旅游商城网站建设宝山苏州网站建设
  • 手机网站免费生成app网络营销策略案例分析
  • 旅行社做网站齐家网装修怎么样
  • 做搞机网站做动画合成的视频网站
  • 一个网站的建设需要什么手续推广运营方案
  • 网站开发php有哪些企业信息管理系统有哪些
  • 京东客网站怎么做php做网站难么
  • 从0建设一个网站文字转图片生成器在线
  • 手机商城网站案例动漫网站实现功能
  • 赛车pk10计划网站建设南通网站的优化
  • 长沙哪里可以做网站东莞企业自助建站系统
  • 官方网站怎么注册哪个网站做h5比较好
  • 营销型网站设计建设网站seo方案建议
  • 男女在床上做暖暖插孔视频网站设计师招聘网站有哪些
  • 广州专业网站开发在家做网站
  • 平阳高端网站建设安徽品质网站建设创新
  • 衡水网站建设培训学校建设网站的报价
  • 鱼馆网站的前期策划去掉 wordpress.org
  • 免费个人简历制作网站mm131爬虫wordpress
  • 网络营销的特点及形式天津网站建设seo优化
  • 子域名的网站放到哪里去公司网站备案网址
  • 网站建设与维护相关知识wordpress+免备案空间
  • 建网站用什么工作站网站怎么快速排名
  • 什么是网站维护南宁seo做法价格
  • 做网站的流程与步骤南昌vr网站开发
  • 博物馆设计网站推荐wordpress维护模式
  • 揭阳网站设计公司任何网络项目开始的第一步