EBa*_*arr 67 .net ssl asp.net-web-api
有没有办法要求WebApi的SSL?一个属性?
我没有看到适用的属性System.Web.Http,比如RequireHttps我们对MVC 的属性.我只是试图避免滚动我自己的属性/消息处理程序,如果有一个内置的解决方案.
The*_*ght 52
public class RequireHttpsAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Forbidden);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Teo*_*gul 45
您可以使用WebAPIContrib项目中的RequireHttpsHandler.基本上,它只是检查传入的请求URI方案:
if (request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
// Forbidden (or do a redirect)...
}
Run Code Online (Sandbox Code Playgroud)
或者,Carlos Figueira 在他的MSDN博客上有另一个实现.
Adr*_*man 20
令人费解的是,ASP.NET Web API中没有与ASP.NET MVC RequireHttps属性等效的内容.但是,您可以根据MVC中的RequireHttps轻松创建一个.
using System;
using System.Net.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
...
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext == null)
{
throw new ArgumentNullException("actionContext");
}
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
HandleNonHttpsRequest(actionContext);
}
else
{
base.OnAuthorization(actionContext);
}
}
protected virtual void HandleNonHttpsRequest(HttpActionContext actionContext)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden);
actionContext.Response.ReasonPhrase = "SSL Required";
}
}
Run Code Online (Sandbox Code Playgroud)
剩下要做的就是争论有多少冗余代码.
| 归档时间: |
|
| 查看次数: |
25253 次 |
| 最近记录: |