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的更多相关文章

  1. "用户增长"--快速身份认证实现用户增长的技术和产品方案

    "用户增长"--快速身份认证实现用户增长的技术和产品方案 1   引言 作为一个互联网产品,用户量的增长是一个非常重要的衡量指标. 这是一个集合了销售,市场,运营,技术的综合能力. ...

  2. (诊断)解决GitHub使用双因子身份认证“Two-Factor Athentication”后无法git push 代码的“fatal: Authentication failed for ...”错误

    在GitHub上采取双因子身份认证后,在git push 的时候将会要求填写用户的用户名和密码,用户名就是用户在GitHub上申请的用户名,但是密码不是普通登录GitHub的密码. 一旦采取双因子身份 ...

  3. 无状态http协议上用户的身份认证

    1.注册时可以使用手机短信验证码进行身份认证 2.用户每次请求不能每次都发送验证码,这时需要服务器给客户端颁发一个身份凭证(一般为一个唯一的随机数),用户每次请求时都携带身份凭证, 服务器会记录该身份 ...

  4. Asp-Net-Core学习笔记:身份认证入门

    前言 过年前我又来更新了~ 我就说了最近不是在偷懒吧,其实这段时间还是有积累一些东西的,不过还没去整理-- 所以只能发以前没写完的一些笔记出来 就当做是温习一下啦 PS:之前说的红包封面我还没搞,得抓 ...

  5. C#进阶系列——WebApi 身份认证解决方案:Basic基础认证

    前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想 ...

  6. WebApi身份认证解决方案:Basic基础认证

    前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想 ...

  7. C#进阶系列——WebApi身份认证解决方案:Basic基础认证 (转)

    http://www.cnblogs.com/landeanfen/p/5287064.html 前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人 ...

  8. Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication)

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  9. WebApi 身份认证解决方案:Basic基础认证

    前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想 ...

  10. (转)C# WebApi 身份认证解决方案:Basic基础认证

    原文地址:http://www.cnblogs.com/landeanfen/p/5287064.html 阅读目录 一.为什么需要身份认证 二.Basic基础认证的原理解析 1.常见的认证方式 2. ...

随机推荐

  1. 精彩预告 | OpenHarmony即将亮相MTSC 2023

    MTSC 2023 第 12 届中国互联网测试开发大会(深圳站)即将于 2023 年 11 月 25 日,在深圳登喜路国际大酒店举办,大会将以"1 个主会场+4 个平行分会场"的形 ...

  2. Pyside2简单案例

    代码: from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit app = QAppl ...

  3. 用户触达难?流失率高?HMS Core预测服务和智能运营,助你提前掌握营销时机,解决此难题。

    用户流失了,触达难? 活动做了那么多,转化仍然很低? 运营也需要提前思考,预测用户动向,提前精准触达,才能事半功倍.结合HMS Core分析服务的预测服务和智能运营,洞察营销时机,实时落地营销策略,提 ...

  4. HDC2021技术分论坛:还有人不知道鸿蒙智联设备认证咋搞?

    作者:maxiansheng,华为鸿蒙智联认证测试专家 2021年5月18日,华为正式宣布原Work With HUAWEI HiLink和Powered by HarmonyOS品牌升级为Harmo ...

  5. 高并发场景QPS等专业指标揭秘大全与调优实战

    高并发场景QPS等专业指标揭秘大全与调优实战 最近经常有小伙伴问及高并发场景下QPS的一些问题,特意结合项目经验和网上技术贴做了一些整理和归纳,供大家参考交流. 一.一直再说高并发,多少QPS才算高并 ...

  6. mysql 重新整理——索引简介[七]

    前言 百度百科索引: 在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单. ...

  7. axiso封装

    import axios from 'axios';import {Message } from 'element-ui'//element-ui提示框组件import config from './ ...

  8. 剑指offer11(Java)-旋转数组中的最小值(简单)

    题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转.请返回旋转数 ...

  9. 19_非单文件名组件中VueComponent构造函数&重要的内置关系

    总结: 关于VueComponent:     1.school组件本质上是一个名为VueComponent的构造函数,且不是程序员定义的,是Vue.extend生成的.     2.我们只需要写&l ...

  10. Sentinel 1.7.2 发布,完善开源生态及扩展性

    多样化的适配模块 到目前为止,Sentinel 已覆盖微服务.API Gateway 和 Service Mesh 三大板块的核心生态,同时多语言已推出 Java.C++.Go 三种语言的原生实现. ...