我正在开发一个Web应用程序。为了用户信息的安全,我需要一个https连接。我现在正在开发这个地方。我已按照教程:http://weblogs.asp.net/dwahlin/archive/2009/08/25/requiring-ssl-for-asp-net-mvc-controllers.aspx
当我构建我的项目时,页面加载但网址为:http:// ...
在我的代码中,我放置了:
[RequiresSSL]
public ActionResult Index()
{
//var model = Adapter.EuserRepository.GetAll();
return View(db.Eusers.ToList());
}
来自网站的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace extranet.Helpers
{
public class RequiresSSL: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase req = filterContext.HttpContext.Request;
HttpResponseBase res = filterContext.HttpContext.Response;
//Check if we're secure or not and if we're on the local box
if (!req.IsSecureConnection && !req.IsLocal)
{
var builder = new UriBuilder(req.Url)
{
Scheme = Uri.UriSchemeHttps,
Port = 443
};
res.Redirect(builder.Uri.ToString());
}
base.OnActionExecuting(filterContext);
}
}
}
我错过了哪个网址不是基于https的?这是因为我在当地工作吗?
提前致谢
答案 0 :(得分:3)
您的过滤器会检查请求是否在本声明中:&& !req.IsLocal
。如果是,那么它不会重定向。如果删除该语句,则无论您是否在本地,都需要通过HTTPS访问该操作。
答案 1 :(得分:0)
当我删除那段代码然后我得到一个401 - 无法制作 与服务器localhost的连接,但链接现在是https
删除代码的这一部分只是问题解决方案的一部分。回到您原来的“如何使用https”的问题,那么您需要enable it using this guide。