在Kestrel中重写后获取原始URL

2024-04-24

Apache 将根据重写的 URL 选择要提供服务的文件,但原始 URL 将传递给脚本。

Kestrel 将重写的 URL 传递到管道中(可通过HttpContext.Request.Path).

是否可以访问原网址来自中间件重写后?


遵循@Tseng 发出的指示。我的测试包装了 RewriteMiddleware,但您可能需要一个单独的中间件。

public class P7RewriteMiddleware
{
    private RewriteMiddleware _originalRewriteMiddleware;

    public P7RewriteMiddleware(
        RequestDelegate next,
        IHostingEnvironment hostingEnvironment,
        ILoggerFactory loggerFactory,
        RewriteOptions options)
    {
        _originalRewriteMiddleware = new RewriteMiddleware(next, hostingEnvironment, loggerFactory, options);
    }

    /// <summary>
    /// Executes the middleware.
    /// </summary>
    /// <param name="context">The <see cref="HttpContext"/> for the current request.</param>
    /// <returns>A task that represents the execution of this middleware.</returns>
    public new Task Invoke(HttpContext context)
    {
        var currentUrl = context.Request.Path + context.Request.QueryString;
        context.Items.Add("original-path", currentUrl);
        return _originalRewriteMiddleware.Invoke(context);
    }
}

后来,我的身份验证过滤器使用它。

if (spa.RequireAuth)
{
   context.Result = new RedirectToActionResult(Action, Controller,
         new { area = Area, returnUrl = context.HttpContext.Items["original-path"] });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Kestrel中重写后获取原始URL 的相关文章

随机推荐

  • Lucene 3 上的“令牌”列表

    我是 Lucene 的新手 我开始学习版本 3 分支 但有一件事我不明白 显然是因为我在该主题上没有经验 在 Lucene 2 9 中 如果我想要一个令牌列表 我会创建一个 Token 类的 ArrayList 例如 ArrayList 这
  • 如何创建 pinterest 风格隐藏/取消隐藏导航/标签栏?

    如何创建隐藏 取消隐藏导航栏 就像 pinterest 和许多其他应用程序所做的那样 我知道基本的想法是使用 UIScrollView 委托并检测我是否向上或向下滚动并基于此显示导航栏 那么 如果导航栏隐藏 我是否还应该调整导航控制器视图高
  • 无法修改 char 数组

    考虑以下代码 char message foo void main void message bar 为什么 MPLAB IDE v8 63 中出现语法错误 我只是想改变字符数组的值 声明后不能像这样使用字符数组 如果您想为字符数组分配新值
  • 如何通过反射判断 C# 方法是否为 async/await?

    e g class Foo public async Task Bar await Task Delay 500 如果我们反思这个类和方法 我如何确定这是否是一个实际的 async await 方法 而不仅仅是一个恰好返回任务的方法 cla
  • 获得正确的图像旋转[重复]

    这个问题在这里已经有答案了 我有一个简单的问题 当我将图像加载到 Windows 窗体时PictureBox有些图片是旋转的 有些则不是 基本上 用户选择带有OpenFileDialog当选择图片时 private void OpenFD
  • 使用 JPA 实体作为域模型是一个好习惯吗?

    或者创建一个由域模型组成的域层并与 JPA 实体对话以进行数据库访问 两种方法的优缺点是什么 谢谢 这确实取决于您对域进行编码的方式 一般来说 在 Java 中 我更喜欢创建一组单独的 JPA 注释的 DTO 来处理持久性 此类 DTO 将
  • 尝试将应用程序二进制文件上传到 App Store Connect 时,Xcode 12 出现错误

    在 Mac OS 10 15 7 的 Xcode 12 1 中 当我尝试将应用程序二进制文件上传到 App Store Connect 时 我得到 App Store Connect 操作错误 请将 iTMSTransporter 更新为
  • Android 上的嵌套 Fragment 和 ViewPager 问题

    我将 FragmentStatePagerAdapter 与视图分页器结合使用 该视图分页器嵌套在 Android 上的片段中 因此 我将 ChildFragmentManager 与 FragmentStatePagerAdapter 结
  • 引用 Attach() 中新定义的变量

    我想对数据框的列进行许多修改 然而 由于需要大量的列和转换 我想避免一遍又一遍地使用数据框名称 在 SAS 数据步骤中 您可以在一个数据步骤内创建一个变量并在定义后立即引用它 data A set A varA varB gt 1 varC
  • 如何检测pyside2中Qwebengine内的按钮点击

    我在 pyside2 中编写了一个应用程序 它在 QWebEngine 中打开一个网页 该网页有 2 个按钮 我不明白如何检测 pyside2 应用程序模块中的按钮单击 我需要对该按钮单击执行其他操作 Example 下面是我的代码 fro
  • main:Object 的未定义方法“run”

    部署时我得到以下输出 cap aborted NoMethodError undefined method run for main Object config deploy rb 37 in block 2 levels in
  • 我在使用 FileSystemWatcher [vb.net] 时遇到问题

    这是我第一次使用 FileSystemWatcher 但它不起作用 在受监视的路径中创建文件时不会触发它 我的目标是监视程序文件目录中的更改 我会将复制的文件与在线列表 我下载的 进行比较 我还没有完成该部分 如果找到匹配项它将做什么 我究
  • Jackson自定义反序列化器仅获取列表xml中的最后一个值

    我有以下 xml
  • SKMaps 显示黑色/蓝色背景

    我正在使用 SKMaps 在 android 中实现路线导航 为此 我展示了一个使用 SKMap 的单独活动 当我第一次展示该活动时 地图会显示并且导航正在工作 如果我从这个活动返回并再次启动这个导航活动 那么它将显示一个带有黑色 蓝色背景
  • 在 C# 中使用鼠标单击在图片框上绘制线条

    我正在尝试制作一个程序 可以在图片框 http msdn microsoft com en us library system windows forms picturebox 28v vs 110 29 aspx使用鼠标单击要绘制线的起点
  • 从输入跳到 CellTable 中的输入

    我有一个 CellTable 其中包含一堆渲染到的单元格
  • 迷你图渲染速度慢并且浏览器挂起

    迷你图 http omnipotent net jquery sparkline 非常适合制作小型内联图 但是 如果它们所在的容器是隐藏的 则不能简单地将它们绘制在幕后然后显示它们 您必须首先显示容器 然后调用 sparkline disp
  • 从子域登录 Facebook(太多“有效 OAuth 重定向 URI”)

    我遇到了以下问题 我正在使用 Facebook js sdk 进行登录过程 在应用程序设置中Site URL被设定为 http example com http example com 应用程序域 are example com www e
  • 无法在 NestedScrollView 内完全滚动

    不知何故 我无法在 NestedScrollView 内完全滚动 我的 NestedScrollView 内部是一个 TextView 其中有很多文本 下面有一个按钮 当我向下滚动时 我只能看到按钮的顶部 只有几个像素 它滚动得不够远 这是
  • 在Kestrel中重写后获取原始URL

    Apache 将根据重写的 URL 选择要提供服务的文件 但原始 URL 将传递给脚本 Kestrel 将重写的 URL 传递到管道中 可通过HttpContext Request Path 是否可以访问原网址来自中间件重写后 遵循 Tse