簡體   English   中英

從ASP.MVC中基於AOP的身份驗證到nodeJS

[英]Coming from AOP based authentication in ASP.MVC to nodeJS

當我在.net世界中並且使用MVC時,如果想進行諸如日志記錄,身份驗證,事務管理之類的跨領域問題時,會使用一種通用模式,那么我將使用DI與AOP配對,從而將屬性基本上放在需要代理/編織的方法上。

所以它看起來像:

public class SomeController
{
   [Authenticate]
   public ActionResult SomeAuthenticatedAction() {}

   public ActionResult NotAuthenticatedAction() {}
}

因此,鑒於上述情況,當調用SomeAuthenticatedAction時,它將檢查對授權cookie的請求,圍繞該請求做一些邏輯,然后用401或類似的東西轟炸用戶。 它會知道執行此操作,因為它具有一個在運行時知道可以掛接和代理的屬性。

現在,我在javascript領域,正在尋找獲得相同功能的方法,但是它是針對該平台的最佳方法。 所以我想知道我應該如何在nodejs中執行此操作,因為javascript中沒有屬性范式,因此既不將身份驗證加進每個app.* (get,post etc)調用我不喜歡或在應用程序入口點代理我知道的每個操作都需要進行身份驗證,這也不理想。

因此,有沒有辦法讓我指出一種方法應該在不涉及邏輯的情況下對其應用一些橫切關注? 這樣,Web代碼就不知道身份驗證機制,而應用程序入口點也不知道特定方法,只知道它想要所有帶有一些元數據的方法?

我希望這是有道理的,就好像您不大量使用AOP一樣,您可能會認為我在胡說八道,但是這樣做可以使我的代碼更容易測試和維護,還可以使我快速重新配置應用程序。

到目前為止,我已經找到了Hooker ,它可以解決難題的代理部分,盡管不太確定如何在其中獲取基礎的請求對象,但是我不會看到JS中對象的代理太麻煩了,但是我只需要找到一種方法來識別要攔截的方法...任何信息都很好。

==編輯==

閱讀更多內容后,看來我應該做的就是使用中間件層來完成我需要的工作,因為這至少將允許使用更簡單的代碼,並且路由的意圖會更清楚。 一旦發現更多或出現更好的答案,我們將繼續尋找回來。

由於沒有答案,因此我將提及我所做的事情,這使它成為一個包含需要在路由上執行的邏輯的類,然后使該函數作為中間件入口點導出。 這樣,我可以對邏輯進行單元測試,並使用中間件將“關注點”注入該路由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM