拦截WCF方法调用和基于认证状态的“重新路由”

时间:2011-03-17 13:56:05

标签: c# wcf authentication intercept

很奇怪是否有办法在进行方法调用之前检查用户是否经过身份验证,然后返回自定义对象,如果不是则不完成调用。例如:

我们将global.asax中的Application_PostAuthenticateRequest中的用户主体设置为发出请求的用户(如果已经过身份验证),或者设置为匿名用户(如果不是)。目前,在所有需要身份验证的方法中,我们都有类似于以下代码的内容:

public Result GetSomeObject()
{
if (HttpContext.Current.Request.IsAuthenticated)
{

}
}

结论:我们希望能够在让WCF进入需要身份验证的方法的方法之前检查IsAuthenticated,如果为true,则继续,否则返回带有身份验证错误的Result对象(JSON)。 / p>

3 个答案:

答案 0 :(得分:0)

您可以编写自定义httpmodule来拦截对服务层的请求,并在那里进行身份验证。

答案 1 :(得分:0)

答案 2 :(得分:0)

您需要开发的内容在WCF中称为ServiceAuthorizationManager。您可以在以下网址找到有关此内容的更多信息:

http://pieterderycke.wordpress.com/2011/04/07/implementing-restricted-access-to-a-wcf-service-with-the-serviceauthorizationmanager/