首页 > 其他分享 >在身份认证后建立用户对象ICurrentUser

在身份认证后建立用户对象ICurrentUser

时间:2024-05-01 11:12:25浏览次数:15  
标签:ICurrentUser HttpContextAccessor string 自定义 IHttpContextAccessor 用户 认证 HttpConte

app.UseAuthentication();

这个中间件添加后,他会为HttpContext.User设置一个ClaimsPrincipal对象。里面有身份认证token里面携带的信息。

其访问方式如下

HttpContext.User.FindFirstValue("自定义字段")

我们可以创建一个服务,方便在应用中使用用户信息。

因为在服务中拿不到HttpContext,所以只能通过IHttpContextAccessor去拿HttpContext

HttpContextAccessor.HttpContext

但是IHttpContextAccessor也需要先注入到容器中,服务才能使用

builder.Services.AddHttpContextAccessor();

完成IHttpContextAccessor注入后,就可以创建一个用户信息服务

 1 public interface ICurrentUser
 2 {
 3     string depart { get; }
 4     string 自定义字段 { get; }
 5     string 自定义字段2 { get; }
 6 }
 7 
 8 public class CurrentUser : ICurrentUser
 9 {
10     //服务中拿不到HttpContext,只能通过IHttpContextAccessor去拿到服务中拿不到HTTPContext
11     public CurrentUser(IHttpContextAccessor httpContextAccessor)
12     {
13         HttpContextAccessor = httpContextAccessor;
14     }
15 
16     private IHttpContextAccessor HttpContextAccessor { get; }
17     public string depart => HttpContextAccessor.HttpContext.User.FindFirstValue("testdepart");//=>只读初始化器语法糖
18     public string 自定义字段 => HttpContextAccessor.HttpContext.User.FindFirstValue("自定义字段");
19     public string 自定义字段2 => HttpContextAccessor.HttpContext.User.FindFirstValue("自定义字段2");
20 }

然后在容器中注入这个服务

builder.Services.AddScoped<ICurrentUser,CurrentUser>();

在控制器或其他服务中使用就通过构造注入就行

public WeatherForecastController(ICurrentUser currentUser)
{
    CurrentUser = currentUser;
}

我们在一个接口中返回这个对象

[HttpGet]
public object GetCurrent()
{
    return CurrentUser;
}

结果如下

 

标签:ICurrentUser,HttpContextAccessor,string,自定义,IHttpContextAccessor,用户,认证,HttpConte
From: https://www.cnblogs.com/ggtc/p/18167277

相关文章

  • Linux基础之用户和组
    目录用户的分类关于用户的操作添加用户useradd设置用户的属性usermod设置用户的密码passwd删除用户userdel用户权限控制sudo关于用户组的操作Linux是一个多用户多任务的分时操作系统,为了对文件和资源进行更好的权限管理,产生了用户和组。在Linux中,每个用户都有一个唯一的用户标识......
  • 手机运营商二要素比对接口:验证用户手机与身份信息一致性
     手机运营商二要素比对接口是一种验证用户手机与身份信息一致性的工具。在实名注册、风控审核等场景中,我们经常需要验证用户的手机号码与姓名是否一致,以确保用户身份的真实性。这个接口可以广泛应用于电商、游戏、直播、金融等需要用户实名认证的场景,并且还支持携号转网核验。......
  • 火车票订票系统的用户分类
    火车票订票系统的用户主要分为以下几类:(1)普通用户:这些用户是系统的最终使用者,他们可以通过注册和登录来访问系统。普通用户可以执行以下操作:1.注册和登录:用户可以注册账号并登录系统。2.购票:用户可以购买火车票,包括直达购票和换乘购票。3.改签和退票:用户可以改变出行时间或位置......
  • 用户管理
    添加账号useradd[选项]用户名-ccomment指定一段注释性描述-d目录指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录-m用于创建用户的家目录。如果-d选项已经指定了家目录的路径,并且该目录不存在,则-m选项会告诉useradd创建该目录。如果-d选项没有指定(或......
  • Kafka SASL认证与ACL配置
    ​ Kafka版本2.12-2.2.0,Zookeeper版本:3.4.14,认证方式:SASL/PLAIN,这种方式其实就是一个账号/密码的认证方式,不过它有很多缺陷,比如用户名密码是存储在文件中,不能动态添加,密码明文等等!建议大家用SASL/SCRAM的方式,这种方式用户名/密码是存储在zookeeper中,能够支持动态添加用户。该种......
  • Linux 下以其他用户身份运行程序—— su、sudo、runuser
    转自:https://blog.csdn.net/u011250186/article/details/106335028/本文综合分析了Linux系统下,如何使用runuser命令、su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较。 一、su命令临时切换用户身份SU:(Switchuser切换用户),可让一个普通用户切换为......
  • openGauss 管理用户及权限
    管理用户及权限默认权限机制管理员三权分立用户角色Schema用户权限设置行级访问控制设置安全策略详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss 配置客户端接入认证
    配置客户端接入认证背景信息如果主机需要远程连接数据库,必须在数据库系统的配置文件中增加此主机的信息,并且进行客户端接入认证。配置文件(默认名称为pg_hba.conf)存放在数据库的数据目录里。hba(host-basedauthentication)表示是基于主机的认证。本产品支持如下三种认证方式,这......
  • openGauss 客户端接入认证
    客户端接入认证配置客户端接入认证配置文件参考用SSL进行安全的TCP/IP连接用SSH隧道进行安全的TCP/IP连接查看数据库连接数SSL证书管理详情查看:https://opengauss.org详情查看:https://docs-opengauss.osinfra.cn......
  • openGauss 授予用户权限
    授予用户权限以授予数据库用户对MOT存储引擎的访问权限为例。每个数据库用户仅执行一次,通常在初始配置阶段完成。说明:MOT通过外部数据封装器(ForeignDataWrapper,FDW)机制与openGauss数据库集成,所以需要授权用户权限。要使特定用户能够创建和访问MOT(DDL、DML、SELECT),以下语......