ASP.NET MVC RequireHttps 仅在生产环境中

2023-12-11

我想使用需要Https属性以防止将不安全的 HTTP 请求发送到操作方法。

C#

[RequireHttps] //apply to all actions in controller
public class SomeController 
{
    [RequireHttps] //apply to this action only
    public ActionResult SomeAction()
    {
        ...
    }
}

VB

<RequireHttps()> _
Public Class SomeController

    <RequireHttps()> _
    Public Function SomeAction() As ActionResult
        ...
    End Function

End Class

不幸的是,ASP.NET 开发服务器不支持 HTTPS。

如何使 ASP.NET MVC 应用程序在发布到生产环境时使用 RequireHttps,但在 ASP.NET 开发服务器上的开发工作站上运行时不使用 RequireHttps?


如果您在开发工作站上运行发布版本,这将无济于事,但条件编译可以完成这项工作...

#if !DEBUG
[RequireHttps] //apply to all actions in controller
#endif
public class SomeController 
{
    //... or ...
#if !DEBUG
    [RequireHttps] //apply to this action only
#endif
    public ActionResult SomeAction()
    {
    }

}

Update

在 Visual Basic 中,从技术上讲,属性与其所应用的定义属于同一行。您不能将条件编译语句放在一行中,因此您必须编写两次函数声明 - 一次带有属性,一次不带有属性。不过,如果你不介意丑陋的话,它确实有效。

#If Not Debug Then
    <RequireHttps()> _
    Function SomeAction() As ActionResult
#Else
    Function SomeAction() As ActionResult
#End If
        ...
    End Function

Update 2

有几个人提到了源自RequireHttpsAttribute没有提供示例,所以这是一个适合您的示例。我认为这种方法比条件编译方法干净得多,这将是我在你的立场上的偏好。

免责声明:我还没有测试过这段代码,哪怕是一点点,而且我的 VB 相当生疏。我所知道的是它可以编译。我是根据spot、queen3和Lance Fisher的建议写的。如果它不起作用,它至少应该传达总体想法,并为您提供起点。

Public Class RemoteRequireHttpsAttribute
    Inherits System.Web.Mvc.RequireHttpsAttribute

    Public Overrides Sub OnAuthorization(ByVal filterContext As  _
                                         System.Web.Mvc.AuthorizationContext)
        If IsNothing(filterContext) Then
            Throw New ArgumentNullException("filterContext")
        End If

        If Not IsNothing(filterContext.HttpContext) AndAlso _
            filterContext.HttpContext.Request.IsLocal Then
            Return
        End If

        MyBase.OnAuthorization(filterContext)
    End Sub

End Class

基本上,如果当前请求是本地请求(即,您通过 localhost 访问该站点),新属性就会退出,而不是运行默认的 SSL 授权代码。你可以这样使用它:

<RemoteRequireHttps()> _
Public Class SomeController

    <RemoteRequireHttps()> _
    Public Function SomeAction() As ActionResult
        ...
    End Function

End Class

干净多了!前提是我未经测试的代码确实有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC RequireHttps 仅在生产环境中 的相关文章

  • Visual Studio 生成后事件 MT.exe 命令失败,代码为 9009

    您好 我正在构建后事件中运行以下命令 C Program Files Microsoft SDKs Windows v7 0A bin mt exe manifest ProjectDir TargetName exe manifest u
  • MVC中如何对数据进行加密和解密?

    In my MVC应用我想要encrypt and decrypt数据从视图到控制器的数据传输 如何执行此操作MVC 4 using Razor 您不需要加密从控制器到视图的数据 因为视图渲染发生在控制器正在操作的同一台计算机中 如果您想加
  • 完整的端到端教程 C++ 与 MYSQL Server 5.5

    我花了几个小时寻找关于如何使用 MYSQL Server 5 5 进行查询的完整端到端教程 这是使用 Visual Studio 2010 Express 的 Visual C 控制台应用程序 有人看过这个设置的实际工作教程吗 当所有内容都
  • 空白 Asp.net MVC 模板

    有没有办法获得 VS2008 的空白 MVC 模板 就像 MVC 附带的唯一的那样 很高兴看到 MVC 的全部内容 但是当您想要创建自己的网站并且首先必须删除它们为您生成的所有垃圾时 它会变得烦人 就像我想使用我自己的身份验证东西 因为我了
  • 自动完成源

    我的表单上有 2 个自动完成文本框 我想要做的是 如果从第一个自动完成文本框中选择了一个值 则动态更改第二个自动完成文本框中的源 我的标记片段如下 function SelectedAddress autocomplete source C
  • 添加自签名证书而不提示用户是/否

    使用一些批处理文件 我想在 Java 密钥库中添加不受信任的自签名证书 命令是 JAVA HOME bin keytool import v trustcacerts alias server alias file server cer k
  • 在asp.net mvc中如何知道请求是否是ajax?

    有人我怎么知道请求是否是ajax 我使用 jquery 进行 ajax 还有Request IsAjaxRequest如果您使用的是更高版本的 MVC 我不再有版本 1 所以我不能说它是否在版本 1 中 如果您需要在 Global asax
  • 尽管存在 pdb 文件,Resharper 也不会导航到外部源

    我的解决方案使用其他解决方案生成的 dll 中的类 dll 在同一台计算机上以调试模式生成 存在 pdb 文件 在调试过程中深入研究这些外部源 所以我假设 pdb 文件是正确的 pdp 文件与 dll 位于同一目录中 在 R 设置中 我选择
  • 淘汰赛区域突出显示 - Visual Studio 2013

    淘汰赛突出显示在 VS2013 中对我不起作用 鉴于我有 淘汰突出显示颜色 设置 我的假设是它应该有效 然而 没有骰子 有任何想法吗 我有完全相同的问题 我是 Visual Studio 的新手 考虑到 Web Essentials 列出了
  • 如何将值从控制器传递到asp.net中的视图?

    我正在开发一个应用程序 我需要将用户名的值从控制器传递到视图 我尝试了 ViewData 中给出的http msdn microsoft com en us library system web mvc viewdatadictionary
  • Visual Studio不记得打开的文档和启动项目

    过去一周 我的 VS 解决方案发生了一些变化 但我还没有找到修复它的设置 当我关闭解决方案并重新启动时 启动项目恢复到与我上次关闭时选择的不同的项目 我的项目层次结构与关闭时不同 每个项目都扩展了 关闭时打开的文档全部关闭 在每种情况下 我
  • 在 Visual Studio 2019 中组织 C# 使用?

    我分配了一个用于删除和排序用途的键盘快捷键 但是我想知道是否可以在保存或格式化文档时组织用途 I m using Power Commands https marketplace visualstudio com items itemNam
  • WIX Heat.exe 命令参数 -var 不接受空格?

    我有这个使用所有不变路径的 WIX 命令 并且它不需要系统环境 与此示例不同 http weblogs sqlteam com mladenp archive 2010 02 23 WiX 3 Tutorial Generate filed
  • ASP.NET MVC 应用程序和 ASP.NET Web 应用程序有什么区别

    任何人都可以解释一下 ASP NET 中的 MVC 和 Web 应用程序之间的区别 在mvc中我们可以找到controllers文件夹 我们不能在 Web 应用程序中找到控制器文件夹吗 请消除我的困惑 MVC 使用控制器来编排模型和视图 以
  • ASP .net MVC中每个数据存储区域的寿命是多少

    我已经看到了一些关于这些的解释 但没有什么可以真正比较它们的开始 结束或重叠的地方 也没有很好的使用例子 以下每个数据集合的生命周期是多少 我还缺什么吗 应用 Session ViewData TempData 应用程序 只要您的应用程序正
  • Hololens 应用程序将不再构建 - 引用元数据文件丢失且找不到 c-Sharp.firstpass

    我已按照 Microsoft 在其多个项目下列出的确切步骤进行操作微软全息 学院 https developer microsoft com en us windows holographic academy教程 我完成了所有这些 并且从创
  • 如何从 System.Web.HttpPostedFileBase 转换为 System.Web.HttpPostedFile?

    在尝试实现 MVC 文件上传时example http www hanselman com blog ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludin
  • ASP.NET MVC 中是否有嵌套母版页?

    我想知道 MVC 框架是否可以利用嵌套母版页 如果是这样 有人有一些关于如何实现这一目标的信息吗 我们经常使用嵌套母版页 以便将布局与标准包含和站点范围标记分开 如下所示 站长
  • 从 ASP.NET Web API 返回 HTML

    如何从 ASP NET MVC Web API 控制器返回 HTML 我尝试了下面的代码 但由于未定义 Response Write 而出现编译错误 public class MyController ApiController HttpP
  • 克隆 Visual Studio 2012 发布配置文件

    如何复制 Visual Studio 发布配置文件 我找到的唯一解决方案是复制 粘贴 重命名发布设置文件 pubxml Properties PublishProfiles目录 创建新的发布配置文件时 会创建两个文件 pubxml 和 pu

随机推荐

  • Flutter/Dart 中的 SOAP 请求

    我需要使用 Flutter 向 NET Webservice WSDL 发出 SOAP 请求 该网络服务有一个基本的身份验证 用户 密码 和一些带有预定义信封的服务 所以我尝试创建一个 SOAP 信封 String requestBody
  • 多次购买时会发生什么 - 非续订订阅应用内购买

    我正在实现一个包含应用内购买功能的示例 订阅是非续订类型 自动续费订阅时 如果用户已经购买过 且在有效期内再次尝试购买 iTunes会提示 您已经订阅了购买 并且不会进一步进行 用户可以使用应用程序恢复功能恢复其订阅 但对于非续订订阅类型
  • 是否可以在 FullCalendar 中交替行背景颜色?

    我对 fc agenda slot tr 应用了奇数 偶数类 但问题是左 右 单元格 边框位于下面的 fc agenda days 表上 因此当我设置背景时它不会显示在 fc agenda slot tr 上 FullCalendar 本身
  • CakePHP 使用 saveAll:如何使用 HABTM 链接记录保存额外数据?

    我已经能够使用 CakePHP 的 saveAll 方法同时创建 成员 并将它们注册到 事件 中 创建 HABTM 链接记录 这非常棒 例如 此代码创建两个新的 Members 并将每个人的记录添加到 EventsMember 表中 将它们
  • Android 数字选择器对话框 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有没有人有任何对话框允许用户选择一定范围内的数字 这似乎是一个相当普遍的需求 但我找不到它的通用对话框 而且我不想花时间创建自己的对话框 有什么帮助吗 我知道两年多过去了 但答案仍然
  • ruby 如何允许方法和类同名?

    我碰巧正在用 ruby 开发 Singleton 类 只记得它的工作方式工厂女工 他们解决了这个问题 所以你可以同时使用漫长的路 Factory create and 捷径 Factory 我想了想 很好奇他们是如何上课的Factory也表
  • Cygwin编码困难

    不确定这是否是一个编程问题 我开始怀疑是这样 但后来我在 Windows 控制台而不是 Cygwin 控制台中运行了有问题的 Java 程序 可执行 jar 并且它运行良好 输出重音良好 重音输入接受良好 因此以下内容仅适用于 Cygwin
  • kernel.h中min宏中的“(void)(&_min1 == &_min2)”的作用是什么?

    In kernel h分钟定义为 define min x y typeof x min1 x typeof y min2 y void min1 min2 min1 lt min2 min1 min2 我不明白那条线是什么 void mi
  • 在 SimpleInjector 中使用 IAuthorizationFilter 进行依赖注入

    我有课PermissionFilter实现IAuthorizationFilter from System Web Mvc 由于它具有已映射的依赖项 因此我想使用 SimpleInjector 来提供它 我正在这样做 与 Ninject 合
  • 嵌套 ES6 类?

    似乎可以将类嵌套在构造函数中 然后可以从类中的任何位置实例化 这是官方的吗 编辑 例如 class C constructor class D constructor method var a new D works fine var a
  • 跨域AJAX withCredentials,PHP返回标头内容长度,但没有内容

    我正在尝试从一个域上的页面向另一个域上的 PHP 服务器发送跨域请求 没有凭据 一切都可以正常工作 我需要一个会话 但一旦添加凭据 它就不起作用 这是JS代码 var xhr new XMLHttpRequest xhr open GET
  • 使用 $_GET 字符串传递换行符

    我必须将字符串传递给表单 我想按以下方式混合使用 GET 和 POST
  • ViewBox 内的 WPF TextBox 在调整大小时丢失光标

    我在视图框中有一个文本框 当我尝试调整窗口大小时 文本框大小和字体大小会缩放 但如果我尝试聚焦文本框并尝试使用键盘在文本框中移动光标 有时光标会消失 有没有办法始终显示光标 请参考下面的代码 其中 ViewBox 内有一个 TextBox
  • boost/archive/binary_woarchive.hpp 和/或 boost/archive/binary_wiarchive.hpp 的序列化示例?

    我试图找到一个很好的例子来说明如何使用 boost 序列化内容的这些二进制宽字符版本 我拼凑了一些代码来尝试让它工作 但不幸的是 在尝试编译它时 我遇到了链接器错误 这是我的代码 以防我做任何明显错误的事情 include
  • 处理子例程中重复出现的 VBA 错误

    我被困在我有解决方法的事情上 但这让我烦恼我没有关于如何解决使用问题的直接答案On Error Goto对于重复出现的错误 我的问题本质上是一样的正如这个 但是提供的答案是OP整体方法的替代方案 而不是如何处理具体问题 我在下面简化了一个例
  • 每隔几秒调用获取当前坐标而不使用 NSTimer

    我知道如何用 NSTimer 做到这一点 但我不想每隔几秒就在没有计时器的情况下获取当前的 iPhone 坐标 我无法使用计时器 因为我在应用程序处于后台时获取坐标 我尝试过一些方法 但每秒都会调用一次 而不是每 10 秒调用一次 因为我不
  • CodeIgniter 删除 index.php 不起作用

    我正在使用 Ubuntu 13 并为本地 codeigniter 站点进行以下设置 Apache 2 4 6 Ubuntu 5 5 3 1ubuntu2 2 CI VERSION 2 1 2 如果没有 URL 将不再有效index php
  • 已超出传入消息的最大消息大小配额 (65536)

    我在为几个表创建范围时遇到此异常 所有这些表在设计上都很大
  • 我可以使用参数化查询从 SQL Server VarBinary 列返回字节数组吗?

    我编写了一个小型 VBA 过程来测试使用 ADO 将文件作为二进制数据上传到 SQL Server 中的 VarBinary 列以及从中下载文件 上传过程似乎可以正常工作 但我无法让下载过程正常工作 我相信 VarBinary 的输出参数设
  • ASP.NET MVC RequireHttps 仅在生产环境中

    我想使用需要Https属性以防止将不安全的 HTTP 请求发送到操作方法 C RequireHttps apply to all actions in controller public class SomeController Requi