C# 获取服务堆栈中授权承载的值
我有下面的场景 移动客户端-->服务堆栈api(A)--->Wcf服务(B) 我将访问令牌作为Http授权头从移动客户端发送到服务堆栈api(B),因为我的服务堆栈api(A)只是WCF服务(B)的中间api,所以我不需要在身份验证提供程序中使用服务堆栈构建 我正在将授权标头作为HttpRequestMessageProperty发送到WCF服务(B)。我在wcf服务端(B)处理其余的验证C# 获取服务堆栈中授权承载的值,c#,.net,wcf,
servicestack,C#,.net,Wcf,
servicestack,我有下面的场景 移动客户端-->服务堆栈api(A)--->Wcf服务(B) 我将访问令牌作为Http授权头从移动客户端发送到服务堆栈api(B),因为我的服务堆栈api(A)只是WCF服务(B)的中间api,所以我不需要在身份验证提供程序中使用服务堆栈构建 我正在将授权标头作为HttpRequestMessageProperty发送到WCF服务(B)。我在wcf服务端(B)处理其余的验证 如何获取移动客户端发送的“访问令牌” 在服务堆栈侧(A),只需传递到其他服务(B)I 找不到有关此的正确文
任何人都知道吗?访问任何HTTP请求信息的方法是使用
IRequest
接口,该接口在任何地方都可用,作为all和中的参数,来自服务和Razor视图中的base.Request
属性等
可以从HTTP请求标头集合访问授权HTTP请求标头,例如:
var auth = httpReq.Headers[HttpHeaders.Authorization];
如果您想对所有请求进行一般性处理,您通常会使用一个可用于验证是否发送了有效的授权标头,以及该标头是否有效,否则将返回HTTP错误响应,例如:
this.GlobalRequestFilters.Add((req, res, requestDto) => {
var auth = req.Headers[HttpHeaders.Authorization];
if (auth == null)
{
res.StatusCode = (int)HttpStatusCode.Unauthorized;
res.EndRequest();
}
else if (!MyIsValid(auth))
{
res.StatusCode = (int)HttpStatusCode.Forbidden;
res.EndRequest();
}
});
谢谢:)我和客户服务公司做了一些事情。我在“OnBeforeExecute”中使用了上面的代码片段。在“HandleException”中也使用了异常。