用户登录

在 Guard 里面的 canActivate 方法接收唯一的参数叫 context,它是一个 ExecutionContext, 按住 alt 键, 点一下 ExecutionContext 看一下。

这个 Interface 继承了 ArgumentsHost, 再看一下这个 ArgumentsHost, 它里面其实就是包含了一组参数, 使用它提供的方法可以得到这些参数。

比如调用它的 switchToHttp ,就可以使用 getRequest 得到请求,用 getResponse 得到响应。

在这个演示的守卫里面,添加一个 request, 想知道请求里的东西,先用 context 上的 switchToHttp 方法,它是 ArgumentsHost 里的东西, 接着就可以再调用 getRequest 方法得到请求。

有了请求,你就可以用各种方法去验证当前这个请求到底有没有权限通过,先做个演示,假设在请求里面如果包含 x-demo 这个头部信息,并且它的值是 secret 的话,就让请求通过。

让方法 return,request.header,得到 x-demo 这个头部信息, 判断一下它是不是等于 secret,如果是方法就 return true,请求也就会通过,如果是 false,就不能通过。

回到客户端, 发送一下当前这个请求,响应是 403,表示没有权限。

这回在请求里配置一个头部信息,添加一个 x-demo,它的值设置成 secret, 然后再发送一下这次请求。

这次这个请求就顺利通过了 demoAuth 这个 Guard ,请求成功的接触到了它的处理器,处理器会去创建一个新的内容。

Execution context:获取到请求《 Nest.js 应用框架:核心部件(2) 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点