我想使用RequireHttpsAttribute来防止将不安全的HTTP请求发送到操作方法.
C#
[RequireHttps] //apply to all actions in controller
public class SomeController
{
[RequireHttps] //apply to this action only
public ActionResult SomeAction()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
VB
<RequireHttps()> _
Public Class SomeController
<RequireHttps()> _
Public Function SomeAction() As ActionResult
...
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
不幸的是,ASP.NET Development Server不支持HTTPS.
如何在发布到生产环境时使我的ASP.NET MVC应用程序使用RequireHttps,而不是在ASP.NET Development Server上的开发工作站上运行时?
我希望我的登录页面只是SSL:
[RequireHttps]
public ActionResult Login()
{
if (Helper.LoggedIn)
{
Response.Redirect("/account/stats");
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
但显然,当我开发和调试我的应用程序时,它无法在localhost上运行.我不想将IIS 7与SSL证书一起使用,如何自动禁用RequireHttps属性?
更新
基于StackOverflow用户和ASP.NET MVC 2源代码提供的信息,我创建了以下类来解决问题.
public class RequireSSLAttribute : FilterAttribute, IAuthorizationFilter
{
public virtual void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (!filterContext.HttpContext.Request.IsSecureConnection)
{
HandleNonHttpsRequest(filterContext);
}
}
protected virtual void HandleNonHttpsRequest(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.Url.Host.Contains("localhost")) return;
if (!String.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
{
throw new InvalidOperationException("The requested resource can only be accessed via SSL");
}
string url = "https://" + filterContext.HttpContext.Request.Url.Host …Run Code Online (Sandbox Code Playgroud) 需要将View中的一些CC数据提交给控制器进行处理,我可以只发布它还是有一些常用的方法来保护传输中的数据?
我有一个工作正常的MVC应用程序,但我现在想要在应用程序中添加一个SSL站点.
这是IIS中的一个单独的站点,带有SSL证书,但是为了重用,我只是将SSL站点指向与常规站点相同的目录.
我现在要做的是,如果他们进入安全网址,则将用户引导到某个控制器(付款).否则,他们可以继续保持现状.
做这个的最好方式是什么?
路由?过滤器?自定义BaseController?
我怎样才能确保无论他们尝试什么路线,如果他们的Request.Url.Host是我的安全网址,那么他们将被重定向.将来,如果我添加新的控制器和操作,我不想把它放在每个控制器中.
是否有一种应用程序范围的方法,如果找到某个URL,我可以告诉所有控制器重定向?
asp.net-mvc ×4
ssl ×3
credit-card ×1
debugging ×1
https ×1
iis ×1
localhost ×1
post ×1
redirect ×1
security ×1