乐趣区

egg(103)–egg之定义公共的中间件判断用户是否登录以及去结算页面制作

判断用户是否登录
中间件
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
<%for(var i=0;i<orderList.length;i++){%>
<li class=”clearfix”>
<div class=”col col-img”>
<img src=”<%=orderList[i].goods_img%>” width=”30″ height=”30″>
</div>
<div class=”col col-name”>

<a href=”#” target=”_blank”>
<%=orderList[i].title%>
</a>
</div>

<div class=”col col-price”>
<%=orderList[i].price%> 元 x
<%=orderList[i].num%>
</div>
<div class=”col col-status”>
&nbsp;
</div>
<div class=”col col-total”>
<%=orderList[i].num * orderList[i].price%> 元
</div>
</li>
<%}%>
<li class=”clearfix total-price”>
<label> 应付总额:</label>
<span class=”val”><em data-id=”J_totalPrice”><%=allPrice%></em> 元 </span>
</li>
效果

退出移动版