WCF:如何在HttpModule和ServiceAuthorizationManager中获取请求的Web方法名称

时间:2018-03-18 05:32:55

标签: c# wcf c#-4.0 wcf-security httpmodule

我想使用两种方法设置用户身份验证和授权:

1)HttpModule

2)ServiceAuthorizationManager并覆盖CheckAccessCore

我有一个基于角色的授权,我希望获得基于Web方法进行授权的请求Web方法的名称。

我如何获得请求的网络方法?

由于

1 个答案:

答案 0 :(得分:1)

我在某个时候有类似的要求并记得模糊地使用下面的内容来达到目的:

import { timer } from 'rxjs/observable/timer';

  timer(60000, 120000).subscribe(val => {//schedule Notification
            myMethod();
      });

您可以调整上面的代码段,以更好地满足您的要求,但这肯定会为您提供有关如何提取protected override bool CheckAccessCore(OperationContext operationContext) { string actionName = GetActionName(operationContext); /* do what all further authorization check you want to do * like "can user access method with actionname="Create"*/ } private static string GetActionName(OperationContext operationContext) { string action; if (operationContext.RequestContext != null) { action = operationContext.RequestContext.RequestMessage.Headers.Action; } else { action = operationContext.IncomingMessageHeaders.Action; } if (action == null)// REST Service - webHttpBinding { action = WebOperationContext.Current.IncomingRequest.UriTemplateMatch == null || WebOperationContext.Current.IncomingRequest.UriTemplateMatch.Data == null ? String.Empty : WebOperationContext.Current.IncomingRequest.UriTemplateMatch.Data.ToString(); } else { action = action.Split('/').Last(); } return action; } 名称的清晰图片。