再去创建一个中间件可以判断用户是否有指定的角色 .. 在命令行的下面,执行一下 aodnis make:middleware ,名字是 Is ..
打开 kernel.js .. 在 namedMiddleware 里面,添加一个新的项目 ... 名字是 is ... 中间件的位置是 App/Middleware/Is ..
然后打开刚才创建的这个中间件 ..
在它的 handle 方法里面,从 context 参数里把 auth 解构出来用一下 .. 第二个参数是 next .. 第三个参数是表示中间件参数值的 args 参数 ..
里面先添加一个 roles .. 让它等于 args ..
再添加一个 result ... await ,用一下 auth.user.is ,判断一下 roles .. 下面再判断一下 .. 如果 !result .. 意思就是如果用户没有指定的用户角色 ..
可以 throw 一个 PermissionCheckException ...
在文件的上面,添加一个 PermissionCheckException ... 位置是 App/Exceptions/PermissionCheckException ...
试验
然后去试一下这个 Middleware ... 打开 routes.js .... 找到 posts 这个路由 ... 可以添加要使用的中间件 ... 我们可以在 create ... 还有 store 路由上面,用一下 auth 这个中间件 .. 再用一下 is 这个中间件 ... 冒号右边是中间件的参数值,添加一个 admin .. 意思是用户必须拥有 admin 这个角色 ..
回到浏览器 .. 先登录一下 ... 用小雪这个用户的身份登录一下 .. 她拥有的角色只有 member ..
访问一下创建内容页面 ... 会提示没有权限 ... 因为小雪这个用户没有 admin 这个用户角色 ...
再回来修改一下 .. is:member ...
回来再访问一下创建内容页面 ... 可以正常打开这个页面 .. 因为当前登录的小雪这个用户拥有 member 这个用户角色 ..