She*_*vek 8 c# wcf attributes dependency-injection unity-container
我正在尝试编写身份验证属性以应用于WCF服务应用程序中的某些服务(使用Unity和Unity.Wcf).
认证由外部(到服务应用程序)认证接口执行,该接口当前通过构造注入注入到服务类中并在每个服务方法中直接调用.
这导致每种服务方法中的大量重复代码.
相反,我想将其移动到属性.
但是,我需要在属性中访问身份验证界面.
显然,如果我在属性上使用构造注入,那么在使用属性装饰我的服务方法时它就是一个必需参数,但此时我无法访问它,因为它是由Unity连接的.
如何在属性中注入(或以其他方式访问)身份验证界面?
如果您已经在使用 Unity,我会使用 Unity 的 AOP 功能。面向方面的编程旨在允许简单、DRY 的代码实现来处理横切问题(如身份验证和授权)。这可以消除重复的代码,并将横切关注点与业务逻辑分离。您可以轻松地将依赖项注入到使用 Unity 创建的方面,因为它们是在运行时从容器解析的(动态拦截)。
要使用统一创建方面,只需实现IInterceptionBehavior接口并将其应用到您在容器注册期间不会装饰的服务(此处的说明说明)。
在方面内,您可以轻松读取应用于被拦截方法的所有属性,以便您可以将身份验证方案所需的角色放入属性中(但没有行为)。
我创建了一个演示解决方案来解释 AOP,它使用 CastleWindsor 而不是 Unity,但适用相同的原则。
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |