下面再去改进一下检查用户角色的方法 .. 打开 Is 这个 trait ... 在文件的顶部 .. 先从 acler 这个包里面把 check 这个方法拿出来用一下 ..
然后再找到这个 trait 里面的 is 方法 ... 让它现在接收一个 roleExpression 参数 ... 去掉后面的 all 参数 ..
只留下方法里的 这个 userRoles ... 去掉剩下的代码 ...
添加一个 result ... 它的值用一下 check 方法 ... 把要检查的 roleExpression 交给它 ... 然后是个回调 .. 接收 role 参数 ... return 的是 userRoles 用一下 includes 方法 ... 判断包不包含 role ..
再去试一下这个新的 is 方法 .. 打开 routes.js .. 找到 demo/acl 这个方法 ..
添加一个 result, 用一下 user.is .. 给它一个表示用户角色的表达式 .. member 表示用户要拥有 member 角色 ... && !admin ... 这个表达式的意思就是,用户拥有 member 角色,但同时他不能拥有 admin 这个角色 ..
回到浏览器 .. 访问一下 demo/acl ... 返回的结果是 false ... 因为 id 号是 1 的这个用户不但是 member 他还有 admin 这个角色 ..
再试一下 ... User.find ... 2 ...
访问一下 demo/acl .. 返回的结果是 true,因为 id 号是 2 的这个用户拥有 member 角色,同时他还不是 admin ..