修改 CookieAuthenticationOptions LoginPath OnRedirectToReturnUrl 事件

2024-04-28

我的 MVC 6 ASP.NET 5 项目中有以下设置:

配置方法中的Startup.cs:

app.UseCookieAuthentication(options =>
{
    options.AuthenticationScheme = "Cookie";
    options.LoginPath = new PathString("/<TENANT>/account/signin/");
    options.AccessDeniedPath = new PathString("/<TENANT>/account/unauthorised/");
    options.AutomaticAuthenticate = true;
    options.AutomaticChallenge = true;
    options.Events = new CookieAuthenticationEvents
    {
        OnRedirectToReturnUrl = MyClass.RedirectToReturnUrlAsync
    };
});

活动类:

public static class MyClass
{
    public static async Task RedirectToReturnUrlAsync(CookieRedirectContext context)
    {
        context.Options.LoginPath = new PathString("/<HERE I PLAN TO PUT LOGIC TO FIGURE OUT TENANT FROM CONTEXT>/account/signin");
    }

}

假设用户访问以下网址:

http://localhost/mycompany/securecontroller/secureaction

我希望 Cookie 中间件将用户重定向到:

http://localhost/mycompany/account/signin

问题是当发生重定向到 Return Url 时,代码“MyClass.RedirectToReturnUrlAsync”永远不会被命中,因此我找不到在运行时修改 LoginPath 的机会。

我怀疑我的设置有问题。有人遇到过这个问题吗?

Hooroo


好吧,我想我明白了。我从错误的角度看待问题(并且是在睡了一觉之后!)

app.UseCookieAuthentication(options =>
{
    options.AuthenticationScheme = "Cookie";
    options.LoginPath = new PathString("/<TENANT>/account/signin/");
    options.AccessDeniedPath = new PathString("/<TENANT>/account/unauthorised/");
    options.AutomaticAuthenticate = true;
    options.AutomaticChallenge = true;
    options.Events = new MyCookieAuthenticationEvents();
});

创建您自己的自定义 Cookie 身份验证事件的正确方法是从 CookieAuthenticationEvents 对象派生并覆盖您想要自定义的事件,如下所示:

public class MyCookieAuthenticationEvents : CookieAuthenticationEvents
{
    public override Task RedirectToLogin(CookieRedirectContext context)
    {
        context.RedirectUri = <PUT LOGIC HERE TO REPLACE YOUR REDIRECT URI>
        return base.RedirectToLogin(context);
    }
}

我在之前的尝试中也瞄准了错误的事件。就我而言,正确的重写方法是“RedirectToLogin”方法。

Hooroo

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

修改 CookieAuthenticationOptions LoginPath OnRedirectToReturnUrl 事件 的相关文章

  • 在 WCF 上重用我的 PagedList 对象

    问题 我有一个自定义集合PagedList
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • 头文件中实现的函数的静态与内联

    我想到的方式inline在 C 中用于链接 作用域 我把它放在同一个篮子里extern and static对于全局对象 通常 对于在头文件中实现的函数 我的首选解决方案是将其设为静态 In Foo h static void foo Do
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • C# 中的抽象类和接口类有什么不同?

    C 中的抽象类和接口类有什么不同 An 接口不是类 它只是一个contract定义了public一个类的成员must实施 抽象类只是一个类 您从中可以cannot创建一个实例 通常您会使用它来定义一个基类 该基类定义了一些virtual方法
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • FluentAssertions ShouldNotThrow 无法识别异步方法/Func

    我正在尝试检查异步方法是否抛出具体异常 为此 我使用 MSTEST 和 FluentAssertions 2 0 1 我已经检查过这个关于 Codeplex 的讨论 http fluentassertions codeplex com wo
  • 如何调试.NET Windows Service OnStart方法?

    我用 NET 编写的代码仅在作为 Windows 服务安装时才会失败 该故障甚至不允许服务启动 我不知道如何进入 OnStart 方法 如何 调试 Windows 服务应用程序 http msdn microsoft com en us l
  • std::make_pair 与浮点数组(float2,无符号整数)

    我有一个用 float2 unsigned int 对模板化的向量 例如 std vector
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 节点*链表中的下一个

    我是数据结构和算法的新手 我遇到了以下代码 typedef struct node int data node next 谁能告诉我为什么我们要声明节点 next next 不能声明为 int next 吗 因为你希望能够做到n gt ne
  • 本地时间的内存需要释放吗?

    void log time t current time 0 tm ptm localtime current stuf 只是想确定 我是否需要在方法结束时释放 tm 指针分配的内存 不 你不应该释放它 该结构是静态分配的 检查文档 htt
  • asp.net mvc - Ajax 刷新视图的每个元素

    希望在退出 jquery 对话框后使用 ajax 刷新当前页面 我有一个包含 foreach 循环的视图 数据是从模型中提取的 每个循环有 2 个编辑 删除按钮 当我单击 编辑按钮 时 将打开一个 jquery UI 对话框进行编辑 当我保
  • 使用 dateTimePicker 在 DataGridView 中编辑日期

    我有一个DateTime我的 WinForms 中的专栏DataGridView 目前只能通过手动输入日期来编辑该字段 例如 2010 09 02 需要什么才能拥有一个DateTimePicker 或同等 用作编辑器 DataGridVie
  • 在 C# 命令行应用程序中包含并执行 EXE

    所以我找到了一个很棒的小 EXE 命令行应用程序 我们将其称为 program exe 它输出一些我想用 C 操作的数据 我想知道是否有一种方法可以将program exe 打包 到我的Visual Studio项目文件中 这样我就可以将编
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 如何将jquery.post中的数据发送到使用ViewModel作为参数的mvc控制器?

    我正在使用 ASP NET MVC 编写应用程序 我有带有操作的控制器 它使用一些 ViewModel 作为参数 如何使用 jquery post 将表单数据发送到该 mvc 控制器 post Yourcontroller YourActi
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用

随机推荐

  • 对“组件”类型的引用声明它是在“系统”中定义的

    尝试在 UWP 应用程序中获取一些 WMI 对象 在 net 4 6 上运行 VS2015 我收到 ForEach 和方法调用错误 指出 引用类型 组件 声明它是在 系统 中定义的 错误为 CS7069 using System using
  • 导入 pygame.font 失败

    import pygame对我来说效果很好 但是import pygame font失败并出现错误 ImportError dlopen Library Frameworks Python framework Versions 2 7 li
  • 如何使用 VS2010 在开发服务器上测试将 ASP.NET Web 应用程序作为 64 位进程运行?

    我的任务很简单 我需要在我的开发计算机上的 64 位环境中测试我的 ASP NET Web 应用程序 此时 我什至不询问如何通过调试器运行它 我所需要的只是在 64 位进程中运行它 因此 我在 Visual Studio 2010 中创建了
  • CSS 100% 高度布局

    我知道这是一个常见问题 我查找了一些解决方案 但找不到我想要的东西 我想转换this http pastehtml com view av6fb8bir html到无表布局 注意 页眉和页脚必须设置为固定高度 以像素为单位 50px 即可
  • mysql非空字段计数

    我想计算 mysql 中特定字段集有多少字段为空 我找到了一些示例 但它们都遍历整个表 基本上我有8个字段 listing photo 1 到listing photo 8 我想知道其中有多少个被填充 I tried result mysq
  • 哪些 .NET 依赖注入框架值得研究? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 不均匀圆盘的最佳覆盖

    What kind of algorithm can I use to search for an optimal minimum area covering of a limited region of the XY plane with
  • 嵌入式剃须刀视图

    最近 我读到一篇post http www chrisvandesteeg nl 2010 11 22 embedding pre compiled razor views in your dll 作者在其中描述了如何将 razor 视图编
  • Terraform如何在路由表中获取动态路由

    Terraform如何根据工作空间在路由表中获取动态路由 UAT resource aws vpn gateway micorsoft vpn gw vpc id aws vpc default id tags Name micorsoft
  • Vaadin - GWT 错误“模块 xxx 可能需要重新编译

    我正在加大 Vaadin 的力度 每当我尝试运行演示应用程序时 都会收到此 javascript 警报 GWT module com vaadin terminal gwt DefaultWidgetSet may need to be r
  • linux命令行:如何简单地将任意字符串输入管道?

    我正在寻找一个非常简单的技巧 假设文件中error txt 有一个很长的字符串 errorMessage key1 some message key2 message 2 由于它的格式不适合读者 如果我想在终端中以格式良好的形式查看它 我可
  • 如何在 WordPress 中调用 href 上的 PHP 函数?

    我有以下功能 我想在用户单击超链接 取消激活我的帐户 时调用此函数 在 href 点击上调用函数的最佳方式是什么 谢谢 function deleteUserMeta userID delete usermeta userID subscr
  • java中的new关键字是多余的吗?

    我来自 C 所以 java 的一个特性我不太理解 我读过所有对象都必须使用关键字创建new 但基元除外 现在 如果编译器可以识别原始类型 并且不允许您在不调用其构造函数的情况下创建对象new 有这个关键字的原因是什么new根本吗 有人可以提
  • 防止我的数据影响谷歌分析

    我最近推出了一个网站 并使用谷歌分析来跟踪流量和趋势 不幸的是 我喜欢和我的商业伙伴一起经常检查该网站 我们的数据正在影响我们的谷歌分析 有没有一种简单的方法可以使某些用户活动不会被谷歌分析跟踪 我正在考虑将另一个域名 或子域 附加到我的网
  • 提升 ggplot2 性能

    The ggplot2软件包无疑是我使用过的最好的绘图系统 只是对于较大的数据集 约 50k 点 来说性能并不是很好 我正在考虑通过 Shiny 提供网络分析 使用ggplot2作为绘图后端 但我对其性能并不满意 尤其是与基础图形相比 我的
  • 专门化 STL 算法,以便它们在可用时自动调用高效的容器成员函数

    STL 具有全局算法 可以在任意容器上运行 只要它们支持该算法的基本要求 例如 某些算法可能要求容器具有随机访问迭代器 例如向量而不是列表 当容器具有比通用算法更快的执行方式时 它会提供具有相同名称的成员函数来实现相同的目标 就像提供自己的
  • 合并分割的 PDF 后尺寸增加

    我在我的应用程序中使用 PDF 进行渲染 以获取页面级别的各种其他信息 为不同的 O P 格式创建 swf xml 等 页面级别拆分已完成并处理 环境是Linux Fedora 8 最终的 PDF 是使用分割 PDF 重新创建的 但对于一些
  • 尝试在 macOS 11.1 上“运行”arm64 二进制文件时,lldb 给出“附加失败”

    这是在 M1 mini 上 运行 11 1 并更新了 Xcode 所有挂起的更新均已应用 SIP 尚未禁用 如果可以的话 在 M1 上 我们有一个程序用来测试mmap 我们的应用程序移植失败 我们像这样构建测试程序 cc v arch ar
  • 将 laravel 从 5.5 更新到 5.7 时出现错误(未定义的类常量 'HEADER_CLIENT_IP')

    我收到这个错误 未定义的类常量 HEADER CLIENT IP 脚本 php artisan package discover 处理返回的 post autoload dump 事件 错误代码1 我变了 app Http Middlewa
  • 修改 CookieAuthenticationOptions LoginPath OnRedirectToReturnUrl 事件

    我的 MVC 6 ASP NET 5 项目中有以下设置 配置方法中的Startup cs app UseCookieAuthentication options gt options AuthenticationScheme Cookie