判断用户是否登录
中间件
app/middleware/userauth.js
module.exports = (options, app) => {
return async function init(ctx, next) {
//判断前台用户是否登录 如果登录可以进入 ( 去结算 用户中心) 如果没有登录直接跳转到登录
var userinfo = ctx.service.cookies.get('userinfo');
if (userinfo && userinfo._id && userinfo.phone) {
//判断数据库里面有没有当前用户
var userResutl = await ctx.model.User.find({ "_id": userinfo._id, "phone": userinfo.phone });
if (userResutl && userResutl.length > 0) {
//注意
await next();
} else {
ctx.redirect('/login');
}
} else {
ctx.redirect('/login');
}
};
};
router
var userauthMiddleware = app.middleware.userauth({}, app);
router.get('/buy/checkout', initMiddleware, userauthMiddleware, controller.default.buy.checkout);
}
效果
点击结算,如果没有登录,就跳转到登录页面
购物车到结算页面
controller
app/controller/default/buy.js
async checkout() {
var orderList = [];
var allPrice = 0;
var cartList = this.service.cookies.get('cartList');
if (cartList && cartList.length > 0) {
for (var i = 0; i < cartList.length; i++) {
if (cartList[i].checked) {
orderList.push(cartList[i]);
allPrice += cartList[i].price * cartList[i].num;
}
}
await this.ctx.render('/default/checkout.html', {
orderList: orderList,
allPrice: allPrice
})
} else {
this.ctx.redirect('/cart')
}
}
view
app/view/default/checkout.html
元 x
元
应付总额:
元
效果