【问题标题】:Coming from AOP based authentication in ASP.MVC to nodeJS从 ASP.MVC 中基于 AOP 的身份验证到 nodeJS
【发布时间】:2013-07-31 13:11:39
【问题描述】:

当我在 .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代码不知道认证机制,app入口点不知道具体的方法,它只知道它想要所有带有一些元数据的方法?

我希望这是有道理的,如果你不经常使用 AOP,你可能会认为我在说谜语,但是这样做可以让我的代码更容易测试和维护,也让我可以非常轻松地重新配置应用程序很快。

到目前为止,我找到了Hooker,它可以完成难题的代理部分,虽然我不太确定如何在其中获取底层请求对象,但我不会看到 JS 中的对象代理太多很痛苦,但我只需要找到一种方法来识别拦截方法......任何信息都会很棒。

== 编辑 ==

阅读更多内容后,我可能应该做的是使用中间件层来做我需要的事情,因为这至少可以允许更简单的代码,并且路由的意图是更清晰。一旦我发现更多或出现更好的答案,将继续关注。

【问题讨论】:

    标签: c# javascript node.js aop interceptor


    【解决方案1】:

    由于没有答案,我将提及我所做的,即创建一个包含需要在路由上执行的逻辑的类,然后创建一个导出为中间件入口点的函数。这样我就可以对逻辑进行单元测试并使用中间件将“关注”注入该路由。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 2021-01-25
      • 1970-01-01
      • 2021-11-15
      • 2015-08-12
      • 2020-10-08
      • 1970-01-01
      相关资源
      最近更新 更多