ASP.NET Core 5 MVC:httpContext.User 未在自定义 CultureProvider 中进行身份验证

2024-01-16

我必须在我的网络应用程序中添加本地化。

请求是 grpc 服务将为所有用户提供默认语言,因此在启动时我尝试读取该值,但不知道如何在 new 中使用注册的服务CustomRequestCultureProvider

public static CultureInfo[] supportedCultures = new[] { new CultureInfo("it-IT"), new CultureInfo("en-US")};

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<ISpaClient, GrpcSpaClient>();

    services.AddLocalization(options => options.ResourcesPath = "Resources");
    services.AddMvc()
            .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
            .AddDataAnnotationsLocalization();

    services.Configure<RequestLocalizationOptions>(options =>
        {
            options.DefaultRequestCulture = new RequestCulture(culture: supportedCultures[0].ToString(), uiCulture: supportedCultures[0].ToString());
            options.SupportedCultures = supportedCultures;
            options.SupportedUICultures = supportedCultures;

            options.RequestCultureProviders.Clear();
            options.RequestCultureProviders.Add(new MyCustomRequestCultureProvider());
        });
}

我的定制课程

public class MyCustomRequestCultureProvider : RequestCultureProvider
{
    public override async Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
    {
        await Task.Yield();

        if (httpContext == null)
        {
            throw new ArgumentNullException(nameof(httpContext));
        }

        if (!httpContext.User.Identity.IsAuthenticated)
        {
            return null;
        }
        
        var culture = httpContext.User
                                 .Claims
                                 .FirstOrDefault(c => c.Type == TipoClaim.linguaPredefinita.ToString())?
                                 .Value;

        if (culture == null)
        {
            return null;
        }

        return new ProviderCultureResult(culture);
    }
}

但在这儿httpContext.User从来没有Authenticated,即使页面是


我最好的猜测是您在 UseAuthentication 之前调用了 UseRequestLocalization。

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

ASP.NET Core 5 MVC:httpContext.User 未在自定义 CultureProvider 中进行身份验证 的相关文章

  • 从 .net 应用程序登录 OpenID 站点

    我一直在考虑编写一个小工具来登录 SO 并定期使用一些主题 当前信息更新我的个人资料信息 例如我最新的博客文章或我需要帮助的问题等 为了让它工作 我需要以某种方式从控制台应用程序登录到SO 是否有一个 Net 库可以简化使用原始 http
  • 模拟 WCF 客户端代理的最佳方法

    有没有办法使用 Rhino 模拟框架来模拟 WCF 客户端代理 以便我可以访问 Channel 属性 我正在尝试对 Proxy Close 方法进行单元测试 但由于代理是使用抽象基类构造的ClientBase
  • 如何使用AutoMapper按照类中定义的顺序映射对象?

    给定这两个对象 我使用非常不同的对象来更好地阐明 public class Car public string Brand get set public int Speed get set public class Apple public
  • 模拟对象 - 将所有方法声明为虚拟方法还是使用接口?

    与 Java 不同 net 中的方法默认不是虚拟的 为了使用大多数模拟对象框架 您要么必须将要在模拟上使用的方法标记为 真实 对象上的虚拟方法 要么必须有一个可以模拟被测试类将使用的接口接受代替执行 将每个方法标记为虚拟似乎是一种不好的形式
  • 什么可以解释托管堆上超过 5,000,000 个 System.WeakReference 实例?

    我一直在针对生产 ASP NET Web 应用程序运行负载测试 并且看到在堆上创建了大量 System WeakReference 在大约 15 分钟内 负载管理堆内存已飙升至大约 3GB 并且我有大约 5 000 000 个对 Syste
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • .NET EXE 内存占用

    即使是一个简单的Notepad http en wikipedia org wiki Notepad 28software 29C 中的应用程序消耗兆字节的 RAM 如任务管理器中所示 最小化应用程序时 任务管理器中的内存大小会显着下降 并
  • 将下一个参数作为 String.Format 中的字段宽度

    在 C 中 我有一个想要用于某些字符串的宽度 但直到运行时我才知道该宽度 我正在做这样的事情 string Format 0 digits value prints 123 as 123 是否有一个字符串格式化指令可以让我指定它 而无需像这
  • 序列化和反序列化 HttpRequestMessage 对象

    有人有序列化 HttpRequestMessage 对象的经验吗 尝试使用 Json net 它部分有效 也就是说 JsonConvert DeserializeObject 由于 StringContent 构造问题而失败 无法找到用于类
  • 确保应用程序独立于用户的屏幕分辨率

    有没有简单的方法可以在任何不同的 PC 上运行在 Visual Studio 2005 上用 C 创建的应用程序 无论其屏幕分辨率如何 屏幕分辨率 NET 2 0 中的 Windows 窗体具有一些处理不同 DPI 的机制 并且具有比 NE
  • 有没有办法将消息从 C#.NET 程序集(ActiveX)发送到 VB6 应用程序?

    本问答参考并可用于以下用途 目的 通过ActiveX dll从IE浏览器发送消息到vb6应用程序 从 ActiveX dll 向 vb6 应用程序发送消息 从 C net dll 发送消息到 vb6 应用程序 我读过了本文 http www
  • ASP.NET Core 6 MVC 中的 DateOnly 绑定问题

    我试图使用新的DateOnly输入 NET 6 但我在模型绑定方面遇到了麻烦 完全正规的数据形式如下 被解析为 0001 01 01 并被活页夹接受为有效 全部更换DataOnly与好老DateTime立即解决了这个问题 这可能是 BCL
  • 是否有 .NET 库或 API 可以与 IIS 配置数据库交互/编辑它?

    或者我是否坚持使用自己的 XML 切割 功能 我想创建一个小型任务托盘应用程序 以便我可以快速将虚拟目录重新指向硬盘上的几个文件夹之一 一点背景 我的开发机器上的代码库有 3 个不同的 svn 分支 Current Production B
  • Windows DPAPI - 如何处理熵?

    我正在使用 Windows DPAPI 来加密一些敏感数据 密码存储在注册表中 这一切都运行良好 但我想知道是否有人可以澄清我对 NET 中 可选 提供给 ProtectedData Protect 的 熵 字节的理解 熵 字节数组似乎类似
  • 将 access_token 存储在用户声明中以进行授权是否安全?

    因此 我在设置 IdentityServer4 时遇到了承载身份验证问题 基本上 我无法调用我的 API 资源并收到 401 错误 当我使用 access token 添加授权标头时 我能够从我的网络请求中获取数据 using var cl
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL

随机推荐

  • 这段代码中间接如何工作?

    我正在阅读答案合并两个已排序的链表 https stackoverflow com questions 2348374 merging two sorted linked lists rq 1 代码 define SWAP PTRS a b
  • 如何强制 net.tcp mex 端点 (mexTcpBinding) 参与端口共享?

    我有一个作为 Windows 服务托管的 WCF 服务 我们希望在同一地址启用 mex 端点 但带有 mex 后缀 我一直在尝试使用以下配置来执行此操作 未成功
  • 为什么虚函数没有被调用?

    GUITEXT class guitext public entity public guitext graphics gfx std string text float x float y float size float timeToL
  • 面向 Web 开发人员的 Windows Azure 与 Amazon EC2

    我刚刚观看了 Windows Azure 介绍视频 它让我感觉它是托管 IIS 实例的前端 shell 任何了解更多信息的人 可能是测试版的一部分 是否可以解释为什么您会使用它而不是 EC2 它看起来很简单 但实际上没有详细说明它是如何工作
  • Temporal 或 Uber Cadence 中子工作流程的良好用例是什么?

    我试图了解 Temporal Uber Cadence 子工作流程的用例 与简单地将工作流程拆分为函数相比 子工作流程有什么优势 我有一个相当复杂的工作流程 我正在考虑将其拆分为多个子工作流程 但我不确定这样做的利弊 子工作流可以由不包含父
  • 如何在Delphi 2010下设置泛型类型的前向声明?

    我遇到了一个似乎非常经典的问题 一个项目和一个集合类 两者都互相引用 需要前向声明 我正在使用 Delphi 2010 更新 5 这适用于非泛型类 但我无法解决泛型类型的 E2086 错误 type Forward declarations
  • 在 Mathematica 中自动生成和

    这是我在实现的过程中遇到的一个设计问题广义分配律 https citeseerx ist psu edu viewdoc summary doi 10 1 1 125 8954 假设需要自动生成如下形式的表达式 source yarosla
  • 为什么在数字化示例中 numpy 比 matlab 慢得多?

    我正在比较性能numpy 与 matlab 对比 在某些情况下 我观 察到 numpy 明显慢一些 索引 数组上的简单操作 如绝对值 乘法 求和等 让我们看一下下面的例子 这个例子有点引人注目 涉及到函数digitize 我计划用它来同步时
  • log4j 日志记录层次结构顺序

    log4j 日志记录的层次结构是什么 DEBUG INFO WARN ERROR FATAL 哪一个提供最高的日志记录 这有助于解决问题 任何人都可以提供从最高到最低进行日志记录的顺序或层次结构吗 谢谢 这张表可能对您有帮助 沿着第一列 您
  • iOS 8 数字转换/格式错误? (无法重现)

    以下方法从 UITextField 获取输入并设置其格式以供显示 该代码多年来一直完美运行 但刚刚在使用 iOS 8 1 的 iPhone 6 Plus 上报告了一个问题 对于用户来说每次都会发生这种情况 但我无法重现它 我相信这与 iOS
  • 为什么php命令行无法获取ip地址?

    我的 var www read php 中只有一行 并在本地计算机 127 0 0 1 上构建我的灯 echo SERVER REMOTE ADDR 当输入 127 0 0 1 read php 时 我得到输出 127 0 0 1 何时在控
  • scipy curve_fit 无法拟合 tophat 函数

    我正在尝试将高帽函数拟合到某些数据 即 f x 对于整条实数线来说是常数 但有限长度的一段除外 它等于另一个常数 我的参数是 tophat 函数的两个常量 中点和宽度 我尝试使用 scipy optimize curve fit 来获取所有
  • Go 依赖于 C 运行时吗?

    我找不到 Go 依赖于 C 运行时的信息吗 如果依赖的话 是否静态编译成二进制文件 使得Go编写的应用程序可以在任何地方运行而无需依赖 这里的主题是关于什么是 C 运行时 https stackoverflow com questions
  • Android Java 文本转语音查看额外字符串信息

    我已经浏览了许多适用于 Android 的文本到语音示例 并且我遇到了一个我认为非常简单的问题 但我一生都无法解决它 我只是希望能够查看 EXTRA AVAILABLE VOICES 的输出 例如 根据这个链接 http developer
  • 如何在没有任何.xml配置的情况下使用spring 3.X注释

    我是 Spring 新手 我不喜欢使用 xml 作为 spring 配置 所以我只想使用注释 以下是我的测试代码 它在没有 spring 的情况下运行良好 但是如果我使用 DI 并添加注释 Resource 我会得到 NullPointEx
  • 无法弄清楚如何在 while 循环内正确递增变量,C

    编辑 在我的 IDE 中重写代码后 今天我第八次犯了菜鸟错误 给我的输入提供了错误的数据类型 该错误已被修复 但我的输出仍然不正确 关于我的目标的详细信息 在进行找零时 您很可能希望最大限度地减少为每个客户分发的硬币数量 好吧 假设收银员欠
  • PHP 与 BASH 的 CLI 脚本比较? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我从未在 CLI 中使用过 PHP 但我见过使用 PHP 代码运行的脚本 我想知道 当 PHP 如此流行并且能够在 CLI 中运行时 我们为什么
  • Flash 游戏服务器建议(Node.js、Red5 等)

    快速总结 我们已经完成了一个类似于俄罗斯方块的 Flash 游戏 可以 链接 进行多人游戏 做了一些研究并在这里询问后 闪存套接字 点对点功能 https stackoverflow com questions 6921292 flash
  • 如何通过不同页面(上下文)共享来自 Streambuilder 的提供者数据

    我想在小部件上实时获取来自 firebase 的数据 当我尝试使用StreamProvider然后使用Navigator push 推送的小部件无法获取值Provider of context 我尝试把StreamProvider作为的父母
  • ASP.NET Core 5 MVC:httpContext.User 未在自定义 CultureProvider 中进行身份验证

    我必须在我的网络应用程序中添加本地化 请求是 grpc 服务将为所有用户提供默认语言 因此在启动时我尝试读取该值 但不知道如何在 new 中使用注册的服务CustomRequestCultureProvider public static