繁体   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