gpt4 book ai didi

https - Web API 2 RequireHttps 允许 http 连接

转载 作者:行者123 更新时间:2023-12-01 04:33:51 25 4
gpt4 key购买 nike

我在 MVC Web API 2 Controller 中创建了以下操作:

    [ResponseType(typeof(int))]
[RequireHttps]
public IHttpActionResult SaveLead(EcommerceLead lead)
{
}

但是在我的测试应用程序中,我正在调用
http://localhost/api/savelead

它正在发挥作用。有什么方法可以使操作仅在通过 https 调用时才起作用,即如果不是,则返回 404 或其他什么?

最佳答案

如果您使用的是 RequireHttps来自 Mvc 命名空间,它不适用于 Web API。您可以自己为 Web API 编写一个简单的过滤器来强制执行 HTTPS。由于您使用的是 Web API 2,因此请创建这样的身份验证过滤器。

public class RequireHttpsAttribute : IAuthenticationFilter
{
public bool AllowMultiple
{
get { return true; }
}

public Task AuthenticateAsync(HttpAuthenticationContext context,
CancellationToken cancellationToken)
{
if (context.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
context.ActionContext.Response = new HttpResponseMessage(
System.Net.HttpStatusCode.Forbidden);

}
return Task.FromResult<object>(null);
}

public Task ChallengeAsync(HttpAuthenticationChallengeContext context,
CancellationToken cancellationToken)
{
return Task.FromResult<object>(null);
}
}

关于https - Web API 2 RequireHttps 允许 http 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26504409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com