从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中代理对象太痛苦,但我只需要找到一种方法来识别要拦截的方法。。。任何信息都会很棒。
===编辑===
在阅读了更多内容后,我应该使用中间件层来做我需要做的事情,因为这至少会允许更简单的代码,并且路由的意图会更清晰。一旦我发现更多或更好的答案出现,我会一直看着回来。
由于没有答案,我将提到我所做的事情,即创建一个包含需要在路由上执行的逻辑的类,然后创建一个导出为中间件入口点的函数。这样,我就可以对逻辑进行单元测试,并使用中间件将"关注点"注入到该路由中。
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- AJAX HTTP基本身份验证解决方案
- “TypeError: req.flash 不是一个函数”,使用带有 nodejs、用户名和密码身份验证的护照
- 使用 NodeJS 的请求模块进行 HTTP 身份验证,返回未定义的正文
- NodeJS Passport - 如何打开一个新窗口进行身份验证
- 无法在 nodeJS:TypeError 中对用户进行身份验证:无法使用“in”运算符在 fs 中搜索“用户名”
- 检查身份验证的安全方式(NodeJS/Express)
- AngularJS/NodeJS/RESTEasy+JBoss/LDAP堆栈的身份验证机制
- 从ASP.MVC中基于AOP的身份验证到nodeJS
- 即使手动ssh可以工作,也无法使用带有ssh2模块的nodejs进行身份验证
- 如何从nodejs检查用户是否在servlet/jsp应用程序中进行了身份验证(登录)
- NodeJS Passport身份验证-始终重定向到失败url
- 在nodejs中使用网站进行twitter身份验证时出错
- NodeJS passportJS MySQL本地用户身份验证
- 在从 IIS 托管站点连接的 NodeJS 上对用户进行身份验证
- nodejs中的身份验证过程中出现无效salt错误