UseStatusCodePagesWithReExecute 不适用于禁止 (403)

2023-12-06

当我指定 404 作为 http 结果代码时,UseStatusCodePagesWithReExecute正在按预期工作。

enter image description here

当我指定 403 作为 http 结果代码时,UseStatusCodePagesWithReExecute没有按预期工作。不知怎的,它就像我指定的那样工作UseStatusCodePagesWithRedirects.

enter image description here

我需要的行为UseStatusCodePagesWithReExecute适用于 400-600 范围内的所有状态代码,包括 403。

配置代码:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    //...
    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
            {
                options.Cookie.HttpOnly = true;
                options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
                options.Cookie.SameSite = SameSiteMode.None;
                options.AccessDeniedPath = new PathString("/error/403/");
                options.LoginPath = "/account/signinrouter/";
            });
    //...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
{
    //...
    app.UseStatusCodePagesWithReExecute("/error/{0}");
    //...
}

动作代码:

public IActionResult NotFound()
{
    return base.NotFound();
}

public IActionResult Forbidden()
{
    return base.Forbid();
}

弄清楚了,感谢@Kirk

将此代码添加到AddCookie就可以了。

options.Events.OnRedirectToAccessDenied = context =>
{
    context.Response.StatusCode = 403;

    return Task.CompletedTask;
};

这是原始的事件处理程序方法,我不在乎Locationheader,所以我省略了相关代码,你可能不想。

public Func<RedirectContext<CookieAuthenticationOptions>, Task> OnRedirectToAccessDenied { get; set; } = (Func<RedirectContext<CookieAuthenticationOptions>, Task>) (context =>
{
    if (CookieAuthenticationEvents.IsAjaxRequest(context.Request))
    {
    context.Response.Headers["Location"] = (StringValues) context.RedirectUri;
    context.Response.StatusCode = 403;
    }
    else
    context.Response.Redirect(context.RedirectUri);
    return Task.CompletedTask;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UseStatusCodePagesWithReExecute 不适用于禁止 (403) 的相关文章

随机推荐

  • 使用 CMakeExternalProject_Add 构建 mongo-cxx-driver

    我正在尝试建立mongo cxx driver在基于 CMake 的项目中 该项目应该在 Windows macOS 和 ubuntu 容器中构建 我想确保所有这些平台上的软件将使用相同的驱动程序版本 因此我无法通过以下方式安装驱动程序及其
  • Java Runtime.getRuntime().exec() 似乎正在覆盖 $PATH

    对于一个自动化一些突变充分性测试的项目 我正在尝试从 Java 程序内部的源代码制作 GoLang 我已经能够从终端中的源代码中创建它 并尝试在 Java 中使用该命令Runtime getRuntime exec 命令 String en
  • 我们如何将 void_t 用于 SFINAE?

    我观看了 Walter Brown 在 Cppcon14 上关于现代模板编程的演讲 Part I Part II 他在那里展示了他的void tSFINAE 技术 Example 给定一个简单的变量模板 其计算结果为void如果所有模板参数
  • Retrofit + OkHTTP - 响应缓存不起作用

    我知道有很多类似的问题 但我已经阅读了所有这些问题 但没有一个真正有帮助 所以 这是我的问题 我正在使用 Retrofit okhttp 从 API 获取一些数据 我想缓存它们 不幸的是 我没有 API 服务器的管理员访问权限 因此无法修改
  • Google Glass 将视频流传输到服务器

    我正在尝试为 Google Glass 构建一个应用程序 它可以流式传输到服务器并让客户端通过网络浏览器查看流 到目前为止 我似乎需要通过 RTSP 到媒体服务器 例如 Wowza 执行此操作 然后拥有一个托管一些视频播放器的 Web 服务
  • 包含 url 值的 PHP 数组到包含组合值的新数组

    我已经尝试了很长时间 但找不到一种将数组合并到新数组的方法 大多数时候我迷失在循环和匹配中 我想收到一个可以执行以下操作的 php 5 方法 实施例1 假设有一个包含如下 url 的数组 Array a a b c a b c d e a
  • JSP - 如何在 session.setAttribute 中传递 javascript var? [复制]

    这个问题在这里已经有答案了 刚开始学习 JSP 并尝试在两个页面之间传递数据 我想知道是否可以将 javascript 变量传递给session setAttribute 目前 我可以通过 2 个 jsp 文件传递 一串文本 如下所示 JS
  • 如何修复 src 文件系统问题上的资源更改

    我正在尝试使用Hive关于 MR 执行SQL它中途失败并出现以下错误 Application application 1570514228864 0001 failed 2 times due to AM Container for app
  • 关于 PYTHONPATH 的 Python 2.x 多版本问题

    系统中安装了Python 2 6 现在我想使用Python 2 7中引入的模块 因为我没有root权限 所以我在我的主目录 HOME local 下构建并安装了2 7 我将以下内容添加到我的 HOME bashrc 中 export PAT
  • 用2个方阵模拟matlab的mrdivide

    我有 2 个 19x19 方阵 a 和 b 我尝试使用斜杠 mrdivide 运算符来执行除法 这样 c a b 我正在尝试在 OpenCV 中实现这一点 我发现一些人建议使用cv solve但到目前为止 我还没有找到任何可以给我提供接近
  • C++:提取 boost::variant 元素的大小

    我有一个向量 其中包含带有 boost variant 元素的结构 现在我必须序列化这个向量 由于规范的原因 我必须计算保存该向量所需的八位字节 现在我正在寻找一种方法来以简单的方式实现这一点 int allSize 0 for auto
  • 为什么 Laravel 的 Composer 创建项目执行失败?

    看来除非我使用sudo我的 Composer 命令无法创建 Laravel 项目 Without sudo它给了我以下错误 ErrorException copy Users H composer cache files laravel l
  • Python随机样本生成器(适应庞大的人口规模)

    你可能知道random sample population sample size 快速返回一个随机样本 但是如果你事先不知道样本的大小怎么办 你最终会对整个总体进行抽样 或者对其进行洗牌 这是相同的 但这可能是浪费的 如果大多数样本量与总
  • iPhone 6 不同的故事板?

    当我们拥有iPhone 4 and 5 我们检查了屏幕尺寸 并为每部 iPhone 制作了 2 个故事板 iPhone 4 if height 480 storyboard UIStoryboard storyboardWithName S
  • 显示屏幕顶部而不是位于 inputAccessoryView 上的标签

    这是我的代码 var messageView UITextView var textView UITextView textView text Add your message here textView textColor UIColor
  • 将表从 R 传输到 SQL

    我知道通常要从头开始创建一个SQL表 您需要首先创建一个空表 然后将数据插入到该表中 例如 create table CREATE TABLE Customers CustomerName int ContactName varchar 2
  • 在 jQuery Mobile 1.1 中进行繁重处理之前显示加载微调器?

    我要疯狂地尝试让旋转器出现 我已将繁重的处理功能绑定到一个按钮 document delegate clearread tap onClearRead 所以点击它会调用这个 var onClearRead function setTimeo
  • “System.IO.Stream”不包含 Windows 应用商店应用中“关闭”的定义

    当尝试在 Windows 应用商店应用程序上构建我的 Unity 3D 项目时 出现此错误 System IO Stream 不包含 Close 的定义 并且找不到接受 System IO Stream 类型的第一个参数的扩展方法 Clos
  • 用于突出显示功能的更高效的 JavaScript 代码?

    所以这是我需要清理的功能 我需要创建一个功能 观众可以单击句子中的任何单词 它就会突出显示 然而 我需要做到一次只突出显示一个单词 例如 如果您单击单词 you 然后您改变主意并单击单词 eagle 则单词 you 将被取消选择 它已经有现
  • UseStatusCodePagesWithReExecute 不适用于禁止 (403)

    当我指定 404 作为 http 结果代码时 UseStatusCodePagesWithReExecute正在按预期工作 当我指定 403 作为 http 结果代码时 UseStatusCodePagesWithReExecute没有按预