处置授权属性使用的WCF服务
本文关键字:WCF 服务 授权 属性 | 更新日期: 2023-09-27 18:19:13
我有一个这样的自定义授权属性:
public class AuthorizeApplicationAttribute : AuthorizeAttribute {
private MainServiceSoapClient client;
public AuthorizeApplicationAttribute() {
this.client = new MainServiceSoapClient();
}
public AuthorizeApplicationAttribute(MainServiceSoapClient client) {
this.client = client;
}
protected override bool IsAuthorized(HttpActionContext actionContext) {
if (!base.IsAuthorized(actionContext)) return false;
var currentUser = System.Web.Security.Membership.GetUser();
if (currentUser == null) return false;
var userId = (int)currentUser.ProviderUserKey;
return client.HasPermission(userId);
}
}
我在WebApiConfig
中注册为:
public class WebApiConfig {
public static void Register(HttpConfiguration config) {
// Web API configuration and services
config.Filters.Add(new AuthorizeApplicationAttribute());
// more configuration ...
}
}
但AuthorizeAttribute
没有处置,我可以调用构造函数与soap客户端实例,但然后我不确定在哪里处置它。
仅供参考:我没有使用IoC容器。试着学习如何手工制作
这个例子使用了SoapClient
,但我对DbContext
有同样的问题,而我可以不处理DbContext
而生活,不认为不处理WCF客户端会那么好。
在IsAuthorized方法中使用using语句来初始化和Dispose,而不是在构造函数中初始化。
如果你需要依赖注入,你可以使用属性注入。
这个问题有两个答案与Ninject和StructureMap如何使用依赖注入与属性?
这个问题的解决方案可能会给你想要的东西:
WCF客户端"使用"块问题的最佳解决方案是什么?