gpt4 book ai didi

c# - 如何在 asp.net 中实现 SSL

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:14 24 4
gpt4 key购买 nike

我目前正在开发一个 asp.net mvc 应用程序。我目前正在开发一个登录功能,我的目标是以某种方式实现 SSL,以便我可以将密码以纯文本形式发送到服务器以在那里进行哈希处理。在我的 Controller 中,我将 requireshttps 属性添加到登录操作结果中:

[RequireHttps]//Enforcing SSL in a Web API Controller
public ActionResult Login()
{
return View();
}

目前它什么都不做,页面应该只显示一个表单,但我稍后会添加将数据从表单获取到 Controller 的功能(很可能通过 ajax 调用)。

但是现在我已经添加了这个属性,我无法加载登录网页。然后我找到了这个教程并按照 IIS 管理器的说明进行操作:http://www.iis.net/learn/manage/configuring-security/how-to-set-up-ssl-on-iis

现在,当我尝试访问该页面时出现此屏幕:

enter image description here

我知道我很可能犯了一个明显的错误,因为这是我第一次接触 SSL 和 IIS,有什么想法吗?

这是我的 IIS 管理器的屏幕截图: enter image description here

最佳答案

当前有效的解决方案来自这个问题: ASP.NET MVC: How to automatically disable [RequireHttps] on localhost?

所以我添加了相同的代码:

    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 + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
}

现在当我在本地主机上测试时它可以正常工作。如果托管此网站会怎样? SSL 会起作用吗?

关于c# - 如何在 asp.net 中实现 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23300939/

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