gpt4 book ai didi

c# - 在构造函数中读取 ControllerBase.User

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:05 26 4
gpt4 key购买 nike

我想要一个基本 Controller ,它应该为每个 Controller 操作设置 auth 变量:

_claimsIdentity = User.Identity as ClaimsIdentity;
_userId = claimsIdentity.FindFirst("ID")?.Value;

不幸的是,构造函数中的 ControllerBase.User 为 null,并且 ControllerBase 上没有要按照建议重写的 Initialize 方法 here .如何制作一个已为每个操作设置这些值的基本 Controller ?

最佳答案

在设置 User 属性之前, Controller 在管道中较早地初始化。这意味着如果您尝试在构造函数中访问它,它将为 null。

在调用操作时,框架已经分配了从请求中提取的必要值。因此,建议从操作中访问 User 属性。

作为在基本 Controller 构造函数上设置字段的替代方法,您可以使用属性实现您正在寻找的内容。例如:

protected ClaimsIdentity ClaimsIdentity => User.Identity as ClaimsIdentity;
protected string UserId => ClaimsIdentity.FindFirst("ID")?.Value;

并从派生子类的操作中访问它们。

子类不知道有什么不同 - 唯一的区别是属性的命名约定不同,但如果这真的让你不高兴,你可以总是使用和以前一样的名字。

关于c# - 在构造函数中读取 ControllerBase.User,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47569273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com