學習 NESTJS feat Part 16 === ![](https://i.imgur.com/1fldI8k.png) --- ###### tags: `cookieSession_Nest`,`Nestjs`,`TypeScript`,`TypeORM`,`Project` <br> 設定 /signout 之前 我們可以先設立一個確認這個用戶到底有沒有登入: ![](https://i.imgur.com/ZJbrcK3.png) 上面的 /whoami 就是在DB檢查用戶是否在登入中。 終於@CurrentUser 這個Gate我們需在 users 的檔案底下設立: decorators > current-user.decorator.ts 這樣 ![](https://i.imgur.com/fiD2koq.png) *** ![](https://i.imgur.com/nngLnaw.png) 在這裏我們看到新的功能叫 **createParamDecorator**,那什麽是 **createParamDecorator** 呢? **createParamDecorator** 是一種工具方法,他可以用來創建自定義的參數裝飾器。 使用cPD 使得我們能夠在請求中處理特定的參數,及在控制器中進行相應的處理。 通常在需要在控制器( **Controller** ) 的處理函數 ( **handler Function**) 中獲取route的參數的值時使用。如果我們需要獲取HTTP link 的查詢參數(query Parameters),我們可以創建一個自定義參數裝飾器,然後將其應用于我們需要獲取查詢參數的控制器方法中,這樣在我們的處理函數中,我們就可以使用該參數裝飾器來獲取查詢參數值。 除了路由參數,我們還可以使用‘**createParamsDecorator**’獲取 HTTP 請求中的其他值,如請求頭(**request headers**)和請求正文(**request body**) *** 關於 **createParamsDecorator** 裏面的參數 **context:ExecutionContext** 記載的是當前HTTP請求的各種信息和對象,如請求的原始對象('**request**'),響應的原始對象('**response**'),路由信息)('**route**')等等。 這裏context的對象還包含'**switchToHttp**'放啊,你可以使用這方法訪問到原始的'**request**'和'**response**'對象,從而可以直接操作 HTTP 請求和響應。 還可以使用'**switchToRpc**'方法來獲取RPC請求相關對象或使用'**switchToWs**'方法來獲取 WebSocket請求相關的對象。 *** 回到users.controller 以後導入 CurrentUser 就完成可以看看現在登入的是哪位。 ![](https://i.imgur.com/90i7e87.png) 剛剛在CurrentUsers return 'Hi there',所以確認有人那就回傳這個。