首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从IHttpContextAccessor (asp.net Core3)获取当前用户

在ASP.NET Core 3中,可以使用IHttpContextAccessor接口来获取当前用户的信息。IHttpContextAccessor接口提供了访问HTTP上下文的能力,包括请求和响应信息。

要从IHttpContextAccessor获取当前用户,可以按照以下步骤进行操作:

  1. 首先,在你的应用程序中,确保已经添加了Microsoft.AspNetCore.Http命名空间。
  2. 在需要获取当前用户的地方,通过依赖注入方式将IHttpContextAccessor接口注入到你的类中。例如,在控制器中可以这样注入:
代码语言:txt
复制
private readonly IHttpContextAccessor _httpContextAccessor;

public YourController(IHttpContextAccessor httpContextAccessor)
{
    _httpContextAccessor = httpContextAccessor;
}
  1. 然后,通过_httpContextAccessor.HttpContext.User属性来获取当前用户的信息。例如,你可以在控制器的某个方法中这样获取当前用户的用户名:
代码语言:txt
复制
string username = _httpContextAccessor.HttpContext.User.Identity.Name;
  1. 你还可以通过_httpContextAccessor.HttpContext.User.Claims属性来获取当前用户的声明信息。例如,你可以获取当前用户的角色信息:
代码语言:txt
复制
var roles = _httpContextAccessor.HttpContext.User.Claims
    .Where(c => c.Type == ClaimTypes.Role)
    .Select(c => c.Value)
    .ToList();

需要注意的是,为了能够正确地使用IHttpContextAccessor接口,你需要在Startup.cs文件的ConfigureServices方法中进行配置。在这个方法中,需要添加以下代码:

代码语言:txt
复制
services.AddHttpContextAccessor();

这样就完成了从IHttpContextAccessor获取当前用户的操作。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云函数(SCF)。

  • 腾讯云云服务器(CVM):腾讯云提供的弹性云服务器,可根据业务需求灵活选择配置,提供高性能、高可靠的计算服务。了解更多信息,请访问:腾讯云云服务器(CVM)
  • 腾讯云函数(SCF):腾讯云提供的无服务器计算服务,可帮助开发者在云端运行代码,无需关心服务器管理和运维。了解更多信息,请访问:腾讯云函数(SCF)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET Core 2.0 MVC - 获取当前登录用户信息

由于上一篇只是大概说了下项目,所以准备写下这篇详细说下自己对于获取当前登录用户的设计与实现,原本准备上周末就完成的这篇,结果周六一起来,发现自己起水痘了,嗯,很悲催。。。...获取当前登录用户的整体思路,我们可以通过创建一个静态的用户类,存储当前登录的用户。通过将属性值存储在session中,从而存储到服务器的内存中,做到可以在系统全局中获取当前登录用户的数据信息。   ....NET Framework平台下面的MVC与.NET Core平台下面的MVC,对于Session的使用上存在着一些的差异,主要在于如何获取到Session对象。...这个静态类,通过查阅微软的文档可知,我们可以通过注入IHttpContextAccessor对象的方式从而获取到session对象,解决方案如下所示。...当然现在也只是能在Controller中获取到Session对象,如果想在别的类文件中使用到Session对象,我们需要注入IHttpContextAccessor对象。

2K20
  • Spring Security 实战干货:如何获取当前用户信息

    在某些场景中我们需要获取当前用户是谁?如果你使用了Spring Secrity作为安全框架你可以通过以下手段获取当前用户。...SecurityContext 无论是有状态的Session模式还是流行的JWT模式你都可以通过SecurityContext来获取当前用户: Authentication authentication...Principal java.security.Principal对象也可以获取当前用户信息,在Spring Security中该对象表现为Authentication对象,如果我们在Spring MVC...UserDetails, 我们可以通过Spring Security 4.0提供的注解@AuthenticationPrincipal来获取当前用户的自定义UserDetails对象。...总结 今天总结了如何在Spring Security获取当前用户的各种方法,它们的各自场景都略有不同,你可以根据这些罗列选择最适合你的应用场景。

    6.2K20

    【说站】zblog如何根据用户ID获取当前用户的相关信息

    我们在制作zblog模版或修改个性化zblog模版功能时候,有时我们会需要显示出当前用户的相关信息,比如想要显示当前文章作者的名称、头像等相关信息,但是又不知道如何下手,其实我们可以使用zblog程序内置的函数来调用用户的相关信息...下面就来给大家带来zblog如何根据用户ID获取当前用户的相关信息。 注:$userID为用户ID变量,改成您当前所用到的用户ID变量。 ...//用户页面链接{$zbp->GetMemberByID($userID)->Url}//用户名{$zbp->GetMemberByID($userID)->Name}//用户别名{$zbp->GetMemberByID...($userID)->Alias}//用户级别{$zbp->GetMemberByID($userID)->Level}//用户邮箱{$zbp->GetMemberByID($userID)->Email...}//用户主页{$zbp->GetMemberByID($userID)->HomePage}//用户摘要{$zbp->GetMemberByID($userID)->Intro}//用户头像{$zbp

    3.1K20

    ASP.NET Core管道详解: HttpContext本质论

    [本文节选自《ASP.NET Core 3框架揭秘》第13章, 更多关于ASP.NET Core的文章请点这里] 目录 一、HttpContext 二、服务器适配 三、获取HttpContext上下文...对于一个HttpContext对象来说,除了描述请求和响应的Request属性与Response属性,我们还可以通过它获取当前请求相关的其他上下文信息,如用来表示当前请求用户的ClaimsPrincipal...除此之外,我们还可以通过Session属性获取并控制当前会话,也可以通过TraceIdentifier属性获取或者设置调试追踪的ID。...原则上讲,我们对请求所做的任意形式的响应都可以利用它来实现。...HttpContext上下文 如果第三方组件需要获取表示当前请求上下文的HttpContext对象,就可以通过注入IHttpContextAccessor服务来实现。

    1.2K30

    asp dotnet core Frp 获取用户真实 IP 地址

    本文告诉小伙伴如何通过 Frp 可以拿到用户的真实 IP 地址 我写过dotnet core 通过 frp 发布自己的网站可以在本地运行自己的服务,然后在外网访问到 但是因为是通过本地的 frp 发给用户...,也就是本地是 frp 访问,如使用下面代码获取用户的 IP 地址拿到的是本地的地址 _accessor.HttpContext.Connection.RemoteIpAddress.ToString(...accessor) { _accessor = accessor; } private IHttpContextAccessor _accessor; 详细请看 Edi wang 大神的博客...,因为就是本地的 frp 访问连接 在 frp 会在访问的时候在 HTTP 添加 X-Forwarded-For 里面是用户的真实 IP 当然这里也可能是代理的地址,所以修改一下代码,通过下面代码可以...Core 2.x - Edi.Wang dotnet core 通过 frp 发布自己的网站 用 使用 Frp 为你的 Web 服务添加 https 支持 方式是获取不到用户 IP 地址

    1.9K10

    ASP.NET Core 中 HttpContext 详解与使用 | Microsoft.AspNetCore.Http 详解

    笔者没有学 ASP.NET,直接学 ASP.NET Core ,学完 ASP.NET Core MVC 基础后,开始学习 ASP.NET Core 的运行原理。...所以它的类、方法、属性等,都是针对当前请求起作用。 Properties(特性) Authentication 这个已经用不到了,这里只是列一下表。...,因此请求操作应取消 RequestServices 获取或设置 IServiceProvider 集合,提供访问的请求的服务容器 Response 响应 Session 获取或设置用于管理此请求的用户会话数据的对象...TraceIdentifier 获取或设置用于在跟踪日志中表示此请求的唯一标识符 User 获取或设置此请求的用户 WebSockets 获取一个对象,该对象管理此请求的WebSu套连接的建立 -...Test"] as List) //字典类型,必须先用 as 转为对应类型 { @item } } 结果  可以用 HttpContext.Item  来存储当前请求的意向有用的数据

    2.7K20

    (译)创建.NET Core多租户应用程序-租户解析

    介绍 本系列博客文章探讨了如何ASP.NET Core Web应用程序中实现多租户。这里有很多代码段,因此您可以按照自己的示例应用程序进行操作。...await Task.FromResult(_httpContextAccessor.HttpContext.Request.Host.Host); } } 租户存储 现在我们知道要加载哪个租户,该哪里获取...接下来,我们可以添加一些中间件,以将当前的Tenant注入到HttpContext中,这意味着我们可以在可以访问HttpContext的任何地方获取Tenant,从而更加方便。...‘加个餐’,租户上下文访问者 在ASP.NET Core中,可以使用IHttpContextAccessor访问服务内的HttpContext,为了开发人员提供对租户信息的熟悉访问模式,我们可以创建ITenantAccessor...我们还编写了自定义中间件,将当前的租户信息注入到HttpContext中,以便下游中间件可以轻松访问它,并创建了一个不错的扩展方法,以便您可以像HttpContext.GetTenant()一样轻松地获取当前

    2.5K61

    采用”传统”方式获取当前HttpContext

    我们知道“依赖注入”已经成为了.NET Core的基本编程模式,表示当前请求上下文的HttpContext可以通过注入的IHttpContextAccessor服务来提取。...有时候我们会使用一些由于某些原因无法使用依赖注入的组件,我们如何提取当前HttpContext呢? 要回答这个问题,就得先来了解表示当前HTTP请求上下文的HttpContext对象被存储在什么地方?...既然我们可以利用注入的IHttpContextAccessor服务来得到当前HttpContext,针对HttpContext的获取逻辑自然就体现在该接口的实现类型HttpContextAccessor...于是反编译(也可以直接github上获取源代码)该类型,得到它的源代码。...Core处理请求异步调用链(通过await关键字)总是可以获取当前HttpContext的原因所在。

    59130

    Blazor Server完美实现Cookie Authorization and Authentication

    ,Logout路径 开发一个登录Blazor Component(Page)  重点这里需要生成一个Token,而不是直接传用户名+密码,因为安全 不能明文传输密码。...实现登录 AuthController 用户登录并获取授权  这里的写法和asp.net core登录一样都使用SignInManager 登录成功后和asp.net...core应用一样保存于账号相关的所有授权比如Roles和Claims  如何需要自定义添加自定义的内容比如下面的TenantId TenantName ,ApplicationClaimsIdentityFactory...获取当前登录的账号信息  之前Blazor Server-Side application 是不支持 IHttpContextAccessor获取账号信息,现在竟然可以了。...第一步:创建一个MemoryTicketStore用于存放Identity信息 图片  第二部 修改配置把认证授权信息cookie转存到我们指定的内存里 图片 图片  这样问题就解决了 希望对学习

    2.5K10

    如何asp.net core 3.x 的 startup.cs 文件中获取注入的服务

    一、前言 18 年开始接触 .NET Core 开始,在私底下、工作中也开始慢慢传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core...必定会造成之前的某些写法没办法继续使用,趁着端午节假期,在改造模板时,发现没办法通过构造函数注入的形式在 Startup 文件中注入某些我需要的服务了,因此本篇文章主要介绍如何asp.net core...,我的实现方法如下,因为我需要记录请求的标识 Id 和错误日志,所以这里我需要将 ILogger 和 IHttpContextAccessor 注入到 Startup 类中 /// ...ILogger _logger; /// /// Http 请求实例 /// private readonly IHttpContextAccessor...core 3.x 版本后,你会发现程序会报如下的错误,很常见的一个依赖注入的错误,源头直指我们通过构造函数注入的 ILogger、IHttpContextAccessor 接口 ?

    2.1K30

    ASP.NET Core 性能优化最佳实践

    view=aspnetcore-3.1 积极利用缓存 这里有一篇文档在多个部分中讨论了如何积极利用缓存。...尽可能少的使用大对象 .NET Core 垃圾收集器 在 ASP.NET Core 应用程序中起到自动管理内存的分配和释放的作用。 自动垃圾回收通常意味着开发者不需要担心如何或何时释放内存。...编写查询时,仅返回当前 HTTP 请求所必需的数据。 要 考虑缓存数据库或远程服务检索的频繁访问的数据 (如果稍微过时的数据是可接受的话) 。...不要将 IHttpContextAccessor.HttpContext 存储在字段中 IHttpContextAccessor.HttpContext 返回当前请求线程中的 HttpContext....不要在后台线程获取注入到 controller 中的服务 不要采用如下做法: 以下示例使用闭包 controller 获取 DbContext 进行操作。 这是一个错误的做法。

    2.5K30

    eShopOnContainers 知多少:Ocelot gateways

    如何处理微服务间的交叉问题,比如授权、数据转换和动态请求派发? 客户端如何与使用非互联网友好协议的服务进行交互? 如何打造移动端友好的服务?...在eShopOnContainers中就是通过独立ASP.NET Core Web API项目来提供明确的聚合服务。...首先,该网关项目是基于ASP.NET Web API构建。其代码结构如下图所示: ? 其核心思路是自定义网关服务借助HttpClient发起请求。...: 注册HttpClientAuthorizationDelegatingHandler负责为HttpClient构造Authorization请求头 注册IHttpContextAccessor用于获取...如果不存在,则用户将不被授权,并响应403。 最后 经过以上的讲解,想必你对eShopOnContainers中如何借助API 网关模式解决客户端与微服务的通信问题有所了解,但其就是万金油吗?

    89351

    ASP.NET Core 应用中使用 Cookie 进行身份认证

    ASP.NET Core MVC 应用,这里以 VS 创建的默认项目为例,对于一个 MVC or Web API 应用,要求用户必须登录之后才能进行访问,最简单的方式,在需要认证的 Controller...2.4、获取用户信息 对于添加在 Claim 中的信息,我们可以通过指定 ClaimType 的方式获取到,在 View 和 Controller 中,我们可以直接通过下面的方式进行获取,这里使用到的...而当我们需要在一个独立的类库中获取存储的用户信息时,我们需要进行如下的操作 第一步,在 Startup.ConfigureServices 方法中注入 HttpContextAccessor 服务 public...来获取用户信息,当然,也可以在此处实现登录、登出的方法 namespace Sample.Infrastructure { public interface ICurrentUser...ASP.NET Core

    1.3K40

    ASP.NET Core 搭配 Nginx 的真实IP问题

    如果你是一名 ASP.NET Core 开发人员,并且你的 ASP.NET Core 应用部署在Linux上,相信你应该或多或少与 Nginx 有过接触,在我们将 ASP.NET Core 部署在 Linux...ASP.NET Core 应用程序,实际上与 ASP.NET Core 应用程序 建立连接的是 Nginx ,所以获取到了服务器本地 IP (Nginx和程序部署在一台机子上)。...四.使用CDN如何解决 我们的请求经过一个或者多个cdn结点以后,我们的程序如何获取真实IP呢,这就要看cdn服务商提供的解决办法了,一般有两种: 1.cdn服务商支持设置真实ip到某个指定的请求头,这样我们通过这个请求头就能获取了...请求流程如下图: [1541985228889] 五.如何在代码里最小改动 经过上面的讲解,显而易见我们在代码里无法直接通过 RemoteIpAddress 获取真实ip,那么如果我们在编写代码时,很多地方直接采用...RemoteIpAddress获取真实ip怎么办,难道需要修改每一处吗,这里分享一个简单的解决办法,就是利用 ASP.NET Core 中间件给 RemoteIpAddress 重新赋值。

    1.7K00

    ASP.NET Core 2.0 MVC项目实战

    PSU.Site:表现层,ASP.NET Core MVC项目,项目主程序。...系统权限验证设计: 整个系统分为三种角色,分别为管理员、教职工、学生用户,通过使用Area搭建每个角色的页面,通过在Controller上添加Area特性,指定当前Controller属于的角色...在创建用户时,会指定用户的角色字段,当用户登录成功后,会根据用户角色进行Claim的创建,通过自定义的AuthorizztionHandler来实现对于当前系统的角色权限控制。...当用户登录成功后,会将当前用户信息赋值给一个静态类(使用Session进行存储),对于判断用户是否登录,则是通过自定义一个控制器的基类,重写OnActionExecuting方法来实现对于用户是否登录的判断...1 public static class CurrentUser 2 { 3 #region Initialize 4 5 private static IHttpContextAccessor

    1K30

    ASP.NET Core 搭配 Nginx 的真实IP问题

    如果你是一名 ASP.NET Core 开发人员,并且你的 ASP.NET Core 应用部署在Linux上,相信你应该或多或少与 Nginx 有过接触,在我们将 ASP.NET Core 部署在 Linux...编辑 ValuesController private readonly HttpContext _context; public ValuesController(IHttpContextAccessor...可是却获取到了 127.0.0.1,这是因为 们的请求到了 Nginx,然后 Nginx 再将我们的请求转发到 ASP.NET Core 应用程序,实际上与 ASP.NET Core 应用程序 建立连接的是...四.使用CDN如何解决 我们的请求经过一个或者多个cdn结点以后,我们的程序如何获取真实IP呢,这就要看cdn服务商提供的解决办法了,一般有两种: 1.cdn服务商支持设置真实ip到某个指定的请求头,这样我们通过这个请求头就能获取了...五.如何在代码里最小改动 经过上面的讲解,显而易见我们在代码里无法直接通过 RemoteIpAddress 获取真实ip,那么如果我们在编写代码时,很多地方直接采用 RemoteIpAddress获取真实

    88220

    升维打击,设计之道

    假设我们需要采用ASP.NET Core MVC开发一个供前端应用消费的微服务,其中某个功能比较特殊,它需要针对消费者应用类型而采用不同的处理逻辑。...服务调用的请求会携带应用类型(App或者MiniApp)的信息,现在我们需要解决的是:如何根据提供的应用类型选择出对应的服务(Foo或者Bar)。...InvokeAsync(HttpContext httpContext) => httpContext.Response.WriteAsync("Process for MiniApp"); } 那么如何针对当前请求上下文设置和获取应用类型呢...由于我们自始自终关注的维度只有IFoobar代表的目标服务,所以我们脑子里想的始终是:如何利用DI容器提供目标服务实例。...但是我们面临的核心问题其实是:如何根据当前上下文提供与之匹配的服务实例,这是一个关于“服务实例的提供”维度的问题。

    43130
    领券