我想将令牌添加到 webapi 请求的标头中。
我怎样才能做到这一点 ?
这是我的示例代码
public IHttpActionResult Authenticate(Login data)
{
var Token = "fdsf123546fskjhf-gsuyuhsh";
//here add these token to header
return ?
}
谢谢。
-
你可以使用响应消息结果 https://msdn.microsoft.com/en-us/library/system.web.http.results.responsemessageresult(v=vs.118).aspx为此类:
public IHttpActionResult Authenticate(Login data)
{
var Token = "fdsf123546fskjhf-gsuyuhsh";
var response = new HttpResponseMessage();
response.Headers.Add("Authentication", Token);
return new ResponseMessageResult(response);
}
-
或者创建您自己的结果类:
public class HeaderActionResult : IHttpActionResult
{
private Tuple<string, string> header;
public HeaderActionResult(Tuple<string, string> header)
{
this.header = header;
}
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
var response = new HttpResponseMessage();
response.Headers.Add(header.Item1, header.Item2);
return Task.FromResult<HttpResponseMessage>(response);
}
}
public IHttpActionResult Authenticate(Login data)
{
var Token = "fdsf123546fskjhf-gsuyuhsh";
return new HeaderActionResult(Tuple.Create("Authentication", Token));
}
-
或者使用扩展方法向任何现有 IHttpActionResult 对象添加标头:
public static class HttpActionResultExtensions
{
public static IHttpActionResult AddHeader(this IHttpActionResult actionResult, string name, string value)
{
return new HeaderActionResult(actionResult, name, value);
}
private class HeaderActionResult : IHttpActionResult
{
private readonly IHttpActionResult actionResult;
private string name;
private string value;
public HeaderActionResult(IHttpActionResult actionResult, string name, string value)
{
this.actionResult = actionResult;
this.name = name;
this.value = value;
}
public async Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
HttpResponseMessage httpResponseMessage = await this.actionResult.ExecuteAsync(cancellationToken);
httpResponseMessage.Headers.Add(this.name, this.value);
return httpResponseMessage;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)