我正在我的backbase应用程序中运行多个小角度5应用程序作为小部件.现在我正在尝试编写一个窗口级别的全局服务,并在所有应用程序中共享.
目前,我正在使服务静态并在每个小部件中使用并使用webpack创建特定于小部件的包.在这里,我能够使用rxjs运算符实现http缓存.
但我觉得这可能不是实施它的正确方法.有没有更好的方法在单个项目中跨多个角度5应用程序共享单件服务.
在我的项目中,我们使用的是一个封闭的源代码框架(Backbase,如果你想知道的话).这是一个混合应用程序框架,提供了许多"开箱即用"的安全选项.其中一个是证书固定,我对其实现非常感兴趣.
我们只需要在配置文件中设置一个属性即可.URLSession.shared通过框架处理完成的每个请求,并且钉扎是有效的.但是,如果我实例化我自己的URLSession,那么钉扎效果不佳.但是我也可以URLSession通过用框架实例化它来使pinning对新的有效NSURLSessionConfiguration.
对于那些只阅读代码的人:
// Pinning effective
URLSession.shared.dataTask(with: request, completionHandler: completion)
// Pinning not effective
URLSession(configuration: .default).dataTask(with: request, completionHandler: completion)
// Pinning effective
URLSession(configuration: ShinnyFramework.getConfiguration()).dataTask(with: request, completionHandler: completion)
Run Code Online (Sandbox Code Playgroud)
对我来说,URLSession.shared是不可改变的,所以不可能改变它的工作.要实现固定,唯一的方法是URLSession使用自定义创建新的URLSessionDelegate.
我的问题是:他们做了什么才能得到这种行为?方法调整,Isa调酒,还有其他什么?
编辑:我不是在寻找有关如何实现证书锁定的详细说明.我更感兴趣的是如何编辑所谓的不可变静态属性以及如何在URLSession不使用委托的情况下配置对象的行为.