首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mvc3 https &https

mvc3 https &https
EN

Stack Overflow用户
提问于 2011-02-25 05:08:18
回答 4查看 4.9K关注 0票数 11

我正在将一个asp.net应用程序转换为mvc3。假设我有一个需要https的登录页面,而其他每个页面只需要http,我如何才能将登录重定向到https并将所有其他页面保留在http上?

任何建议都是很棒的!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-25 05:20:11

RequireHttpsAttribute类可能就是您想要的。

代码语言:javascript
运行
复制
[RequireHttps]
public ActionResult SignIn() {
   return View();
}
票数 14
EN

Stack Overflow用户

发布于 2012-03-10 05:00:14

我喜欢这个解决方案是因为: 1.因为你再也不用在VS中接触它了。装饰器本身会使浏览器即使在调试时也以https格式呈现站点。

  1. 如果你把它实现到一个基本控制器中,并且让你的所有控制器都继承自该控制器,你就会知道“可以这么说”,在背后是不会滑倒的。

#if !DEBUG #定义RELEASE #endif命名空间ProjectName.UI.Controllers {使用System.Web.Mvc;#if RELEASE RequireHttps #endif公共抽象分部类ProjectNameBaseController:{} }

票数 4
EN

Stack Overflow用户

发布于 2012-09-22 03:44:20

我和我的一位同事看到了这一点,相信我们找到了一个很好的解决方案。这是我们想出来的:

代码语言:javascript
运行
复制
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class HttpsRequiredAttribute : RequireHttpsAttribute
{
    protected override void HandleNonHttpsRequest(AuthorizationContext filterContext)
    {
        // Check to see if we're secure
        string requirestr = ConfigurationManager.AppSettings["RequireHttps"];
        bool require;
        if (bool.TryParse(requirestr, out require) && require)
            base.HandleNonHttpsRequest(filterContext);
    }       

}

这是通过扩展RequireHttpsAttribute来工作的,并且可以应用于AttributeTargets所指示的类或方法。然后,我们覆盖了RequireHttpsAttribute中的虚函数。该方法所做的是检查Web.config文件中名为"RequireHttps“的密钥。如果它找不到它,或者它是一个无效的布尔值(这是bool.tryparse检查的内容),那么它就不需要Https。如果它发现该值为true,则它需要HTTPS。

如果您使用这个扩展,您将需要在您的Web.config中添加一个名为"RequireHttps“的键,如下所示:<add key="RequireHttps" value="true"/>您可以通过在调试时更改此变量来关闭对Https的要求,或者通过更改您的Web.config文件来满足部署站点的任何位置的要求。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5110497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档