ASP.NET Core Identity - 获取当前用户

2023-11-29

为了获取 MVC5 中当前登录的用户,我们所要做的就是:

using Microsoft.AspNet.Identity;
[Authorize]
public IHttpActionResult DoSomething() {
    string currentUserId = User.Identity.GetUserId();
}

现在,对于 ASP.NET Core,我认为这应该可以工作,但它会引发错误。

using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Http;

private readonly UserManager<ApplicationUser> _userManager;
[HttpPost]
[Authorize]
public async Task<IActionResult> StartSession() {
    var curUser = await _userManager.GetUserAsync(HttpContext.User);
}

有任何想法吗?

EDIT:Gerardo 的响应已步入正轨,但要获取用户的实际“Id”,这似乎可行:

ClaimsPrincipal currentUser = this.User;
var currentUserID = currentUser.FindFirst(ClaimTypes.NameIdentifier).Value;

如果你的代码是MVC 控制器内部:

public class MyController : Microsoft.AspNetCore.Mvc.Controller

来自Controller基类,你可以获得ClaimsPrincipalUser财产

System.Security.Claims.ClaimsPrincipal currentUser = this.User;

您可以直接检查索赔(无需往返数据库):

bool isAdmin = currentUser.IsInRole("Admin");
var id = _userManager.GetUserId(User); // Get user id:

其他字段可以从数据库的 User 实体中获取:

  1. 使用依赖注入获取用户管理器

    private UserManager<ApplicationUser> _userManager;
    
    //class constructor
    public MyController(UserManager<ApplicationUser> userManager)
    {
        _userManager = userManager;
    }
    
  2. 并使用它:

    var user = await _userManager.GetUserAsync(User);
    var email = user.Email;
    

如果您的代码是服务类,您可以使用依赖注入来获取IHttpContextAccessor这可以让你得到User来自 HttpContext。

    private IHttpContextAccessor _httpContextAccessor;

    public MyClass(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

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

ASP.NET Core Identity - 获取当前用户 的相关文章

  • 强制枢轴项目在显示之前预加载

    我有一个带有多个 PivotItems 的 Pivot 其中一个包含一个画布 将其项目放置在动态位置 取决于数据 我获取数据 并且可以在用户选择该项目之前将这些项目放置在其位置 这不是第一个枢轴 但是 只有当我选择 PivotItem 时
  • 在列标题上绘制矩形

    I m painting rectangle on the column headers in datagridview but on scrolling to right it disappears as in the picture s
  • Fortran DLL 导入

    Fortran 中有一段代码罗伯特 L 帕克和菲利普 B 斯塔克 http www stat berkeley edu 7Estark Code sbvq f FORTRAN subroutine bv key m n a b bl bu
  • 将多种类型存储为 C++ 字典中的值?

    我想编写一个行为几乎等同于 Python 字典的 C 对象 C 的std map and std unordered map容纳了 Python 字典已有的一些功能 但缺乏最重要的功能之一 即能够添加任意对象和类型 即使不可能 您离实现 P
  • 当 edmx 文件位于单独的项目中时出错

    我有问题说 在配置中找不到指定的命名连接 或者不打算与EntityClient提供者 或无效 我的 edmx 文件位于单独的项目中 但该项目的连接字符串app config 什么可能导致问题 确保 app config 位于设置为启动项目的
  • 在 Silverlight 中同步操作

    我有一个 Silverlight 应用程序 它使用操作从模型获取数据 再次从 WCF 服务获取数据 我需要以某种方式同步两个 ActionCallback 或等待它们 然后执行一些代码 Example model GetMyTypeList
  • 通过 WCF 提供类对象的数组或列表

    任何提供自定义类对象列表或数组的 WCF 客户端服务器示例都会对我有所帮助 但这是我到目前为止所得到的 这是我想提供的班级系统 namespace NEN Server FS Serializable public class XFS pr
  • 为什么Java不支持C中的clrscr这样的函数?

    我有一个问题 对很多人来说可能听起来很愚蠢 但我不能停下来把它发布在这里 因为在互联网上找不到任何东西 为什么java没有我们在C中使用的clrscr之类的函数 如果我创建了一个基于用户输入反复迭代的 java 控制台应用程序 然后如果我想
  • 如何在 Mac OS X 中获取 aio 信号处理程序的用户数据

    我尝试在 Mac OS X 下使用 aio 函数进行异步文件 IO 但在将某种形式的用户数据输入信号处理程序时遇到问题 这是设置操作的代码 class aio context public aio context int fildes bo
  • FileMode 和 FileAccess 以及 IOException:进程无法访问文件“filename”,因为它正在被另一个进程使用

    我有一个应用程序 A 它生成一个用于跟踪的文本文件 同时 应用程序 B 需要读取相同的文本文件并附加在邮件消息中 但当应用程序 B 尝试读取文本文件时 出现以下错误 IOException 进程无法访问文件 filename 因为它 正在被
  • std::function 中参数的自动动态转换

    我们有多态类 A 和 B 例如 struct A virtual A struct B final public A void f std cout lt lt f lt lt std endl 我想分配一个变量std function
  • JsonSerializer.Deserialize 失败

    考虑代码 using System using System Text Json public class Program public static void Main int id 9 string str id id var u Js
  • UWP 关闭信息亭模式

    我有一个发布到 Windows 应用商店的 UWP 应用程序 并且该应用程序可以启动进入信息亭模式 分配访问权限 它工作得很好 但我尝试在应用程序上创建一个按钮来关闭信息亭模式并返回到 Windows 登录屏幕 我尝试了文档中给出的代码 h
  • Lambda 通过引用捕获右值引用

    下面的代码标准正确吗 godbolt https godbolt org z VE0NWz IE by ref 捕获表示临时的转发引用 并从函数返回结果 lambda 按值 在同一个表达式中 当然 存储 lambda 供以后使用会使其包含悬
  • OpenMP while 循环中的手动同步

    我最近开始使用 OpenMP 为大学的一个项目做一些 研究 我有一个矩形且均匀分布的网格 在该网格上我使用迭代方案求解偏微分方程 因此 我基本上有两个 for 循环 网格的 x 方向和 y 方向各一个 并由 while 循环包裹以进行迭代
  • 为什么转发引用与右值引用具有相同的语法?

    我刚刚对这些 相当 新的功能做了一些研究 我想知道为什么 C 委员会决定为它们引入相同的语法 看来开发人员不必要浪费一些时间来理解它是如何工作的 而一种解决方案可以让我们思考进一步的问题 就我而言 它是从问题开始的 可以简化为 includ
  • 非静态类中的静态方法有什么意义?

    我无法理解以下代码的潜在错误 class myClass public void print string mess Console WriteLine mess class myOtherClass public static void
  • 如何在 C# 中按进程获取打开文件句柄的列表?

    如何在 C 中通过进程 ID 获取打开文件句柄的列表 我也有兴趣挖掘并获取文件名 寻找与流程资源管理器所做的等效的编程 这很可能需要互操作 考虑到对此添加赏金 实现起来非常复杂 哎呀 这很难从托管代码中做到 有一个 大多数事情都可以在互操作
  • Outlook 插件:从选定的日历中获取元素

    我正在创建 Outlook 加载项 我想知道如何从选定的日历中获取元素 例如 我需要从名为 myCalendar 的日历中获取所有约会项目 现在 我可以从所有日历中获取所有约会项目 谢谢你 这些额外的日历作为主日历文件夹的子文件夹提供 所以
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k

随机推荐

  • C# .Net 中 XmlElement 中的空白

    XmlElement child doc CreateElement element Where doc是一个对象XmlDocument 当代码执行上面一行时element Tom and Jerry 我收到以下错误 The charact
  • Woocommerce 中的本地取货运输选项自定义百分比折扣

    我的 WooCommerce 结帐页面提供了一些运输选项 统一费率 需要花钱 本地取货 免费 如果客户选择本地取货运输方式 我如何才能获得订单总成本 5 的折扣 以下代码将为购物车小计添加 5 的折扣当地取货选择的运输方式 add acti
  • UWP 中的 Process.Start

    我想从我的 UWP 应用程序运行文件 视频 音乐 图片 对于 WPF 我可以使用Process Start path 方法 但此方法现在可用于 UWP 我发现我可能应该使用FullTrustProcessLauncher https lea
  • 在 ForEach-Object -Parallel 块内从自身递归调用函数 - 并行块内无法识别函数

    第一次在这里提问 请善待 我试图以并行方式递归地获取所有目录 希望减少遍历驱动器所需的时间 下面是我尝试过的代码 本质上我想要做的是输入一个文件夹 并对其子文件夹及其子文件夹等并行执行相同的操作 但该函数在并行块内无法识别 function
  • 用颜色向量突出显示 ggplot2 中的前 3 个

    我有下面的代码 我想用选定的颜色为前 3 个着色 提前谢谢了 library ggplot2 library dplyr df lt data frame dose c D0 5 D1 D2 D3 D4 D5 len c 4 2 10 29
  • 从Python字典中删除重复的键但对值求和

    我有一本Python字典 d tags 0 value tags 1 value tags 2 value tags 3 value tags 4 value 想象一下这个字典大了 10 倍 它有 50 个键和 50 个值 在此标签中可以找
  • 空 DataTable 到 Json 并包含列名称

    我的应用程序分为两部分 客户端和服务器 服务器端询问 SQL 数据库并将结果存储在 DataTable 中 然后我使用下一个函数将 DataTable 转换为 Json 以将其发送到客户端 问题是当没有结果时 我得到一个空字符串 我想得到一
  • 如何在 Neo4j 3.0.1 中配置查询超时

    我想设置查询超时neo4j conf对于 Neo4j 3 0 1 任何花费超过超时时间的查询都应该被终止 我主要关心的是为来自 Neo4j 浏览器的查询设置超时 看起来像这是可能的过去与 execution guard enabled tr
  • OpenCV:相对于参考图像移动/对齐面部图像(图像配准)

    我是 OpenCV2 的新手 正在从事情感识别项目 希望将面部图像与参考面部图像对齐 我希望在进行旋转之前先进行图像翻译 当前的想法是在 x 和 y 坐标的有限范围内运行搜索 并使用平方差之和作为误差度量来选择最佳的 x y 参数来对齐图像
  • PHP 将 24 位颜色转换为 4 位颜色

    背景 我正在将图像转换为 ascii 艺术 这可以完美地工作 甚至可以使用 24 位颜色 将颜色转换为正确的 RGB 值 然而 我现在想用 4 位调色板而不是 24 位来渲染 ASCII 艺术 如何使用 PHP 将 24 位颜色转换为 4
  • 添加到 Woocommerce 的自定义元数据未显示在订单项元中

    我有一个 WooCommerce 订单的自定义元数据 现在我想在结账后将其显示在感谢页面上 但是该数据不可用 数据已保存并可在管理员中使用 但我似乎无法访问它 function custom order item meta item id
  • oData $expand 派生类型

    我在使用 odata 查询获取派生类型时遇到挑战 Url odata resource expand 衍生类型 看到这个link这给出了像这样的选项 People OfType Employee 41 Manager 或 People Em
  • 无法使用 AngularJS 在 Android 浏览器中执行 POST 请求

    我有一个有角度的应用程序 可以显示记录 并让用户能够添加记录 在桌面或 iOS 设备上一切正常 但在 Android 设备上 POST 方法失败 403 禁止 这是我的服务中的代码 obj getRecords function retur
  • 终止正在 Q​​Thread 内运行的正在进行的 QProcess? [复制]

    这个问题在这里已经有答案了 如何终止正在 Q Thread 内运行并被另一个 QThread 删除的正在进行的 QProcess 我什至插入了一个 QMutex extCmdProcessLock 这应该避免在 extCmdProcess
  • Paper.js 外部文件将无法加载

    我只是想进入 paper js 内联时代码可以正常工作 但是当我将它们移动到外部文件并在那里 src 时 错误开始弹出 任何人都可以弄清楚我做错了什么吗 附有错误屏幕截图 非常感谢 错误截图
  • PHP 在 if 语句中组合布尔运算符(AND、OR)

    我想知道是否可以将两个运算符 OR 和 AND 组合在一个 if 语句中 如下所示 if apple 1 orange 2 cake 0 我想说的是 如果苹果等于 1 橙子等于 2 或者蛋糕等于 0 那么就这样做 换句话说 我需要苹果和橙子
  • Python:如何按每个元素的最大值对列表进行排序?

    L a b c d e f 我想按 max a b max c d max e f 等对其进行排序 您可以提供定制key函子到sort L sort key max
  • 如何获取 postgresql 9.5 中特定模式中存在的所有表的表行数?

    如何获取 postgresql 9 5 中特定模式中存在的所有表的表行数 我希望结果为 table name 行数 如何使用查询来完成此操作 这可以通过一些 XML 魔法来完成 select table schema table name
  • Discord.py:为什么我的加入消息不起作用?

    我很困惑为什么我的加入消息不起作用 我安装了discord py库 我真的很困惑 我下面还有其他代码 但它不应该影响上面的代码 import discord client discord Client client event async
  • ASP.NET Core Identity - 获取当前用户

    为了获取 MVC5 中当前登录的用户 我们所要做的就是 using Microsoft AspNet Identity Authorize public IHttpActionResult DoSomething string curren