一,router/admin.js

var express = require('express')

var router = express.Router()

var User = require('../models/User')


/** 验证用户是否为管理员 ,防止其他用户通过 /admin 路径访问 */

router.use((req, res, next) => {

if (!req.userInfo.isAdmin) {

res.send('对不起,你不是管理员,不能进入')

return

}

  next()

})



/** 首页 */

router.get('/', (req, res) => {

console.log(('admin ---- req.userInfo 数据 :' + JSON.stringify(req.userInfo)).yellow)

  res.render('admin/index', {

  userInfo: req.userInfo

})

})


/** 用户管理 */

router.get('/user', (req, res) => {


/**通过类或构造函数的方法读取 => 所有用户的信息 */

User.find().then((users) => {

  console.log((' 所有用户 : ' + users).red)


/**

*

* 【 重点 : 数据到模板的传输 】

*

* 不要删除 userInfo , 会影响到cookie .

*

* 在数据中添加 users 即可

*/


res.render('admin/user', {

  userInfo: req.userInfo,

  users:users

})


  })


// 错误的示例

// res.render('admin/user', {

//    users: req.userInfo

// })

})


module.exports = router


二, /views/admin/user.html

{% extends 'layout.html' %}

{% block main %}

<ol class="breadcrumb">

<li><a href="/admin">管理首页</a></li>

<li><span href="/user">用户列表</span></li>

</ol>


<h3>用户列表</h3>


<table class="table table-bordered">

<tr>

<th>用户名</th>

<th>id</th>

<th>密码</th>

<th>是否是管理员</th>

</tr>

<!-- 循环输出数组 . id是对象,需要转换成字符串 -->


{% for user in users %}

<tr>

<td> {{user.username}}</td>

<td> {{user._id.toString()}}</td>

<td> {{user.password}}</td>


{% if user.isAdmin %}

<td> 管理员 <td>

{% else %}

<td> 普通用户</td>

{% endif %}

</tr>

{% endfor %}


</table>



{% endblock %}