学习ASP.NET Core的身份认证(基于Cookie的身份认证3)

news2024/11/29 0:44:50

  用户通过验证后调用HttpContext.SignInAsync函数将用户的身份信息保存在认证Cookie中,以便后续的请求可以验证用户的身份,该函数原型如下所示,其中properties参数的主要属性已在前篇文章中学习,本文学习scheme和principal的意义及用法。

public static Task SignInAsync(string? scheme, ClaimsPrincipal principal, AuthenticationProperties? properties);

  ASP.NET Core项目启动时通过builder.Services.AddAuthentication可以注册多种认证方式,如Cookie、OAuth、JwtBearer等,在调用SignInAsync时指定需要使用的认证方式名称,也即赋予参数scheme特定的认证方式名称。
  SignInAsync函数的principal参数类型为ClaimsPrincipal ,对应的是微软的Identity框架,常用的是Claim、ClaimsIdentity、ClaimsPrincipal类,根据参考文献1中的介绍,这三者的关系是可以理解为ClaimsPrincipal代表当前登录用户,ClaimsIdentity为针对特定认证方式的认证信息实例,而Claim为认证信息明细。一般每个用户登录时创建一个ClaimsPrincipal对象,同步根据当前认证方式创建一个类型为ClaimsIdentity的认证信息集合对象,其内包含若干Claim信息实例。
  Claim类定义如下,从网上及微软帮助文档来看,主要还是直接调用构造函数指定type、value来创建实例对象,type参数类型为string,可以人工指定,也可以使用ClaimTypes静态类的预定义字符串。Claim代表认证信息明细,其可以保存用户名,也可以保存用户角色,用户有多个角色的话就创建多个Claim示例,后续在控制器类中可以根据用户角色进行访问控制。

在这里插入图片描述在这里插入图片描述

  创建ClaimsIdentity对象实例需要指定其对应的认证方式,然后就是调用AddClaim/AddClaims函数添加认证信息明细(Claim对象)。用户登录后在其它控制器中获取的HttpContext.User.Identity信息就是登录认证时产生的。
在这里插入图片描述
参考文献:
[1]https://www.cnblogs.com/fanfan-90/p/11918537.html
[2]https://blog.csdn.net/u010476739/article/details/104447807
[3]https://www.cnblogs.com/baiqian/p/11187812.html
[4]https://www.jianshu.com/p/7939a31b0941
[5]https://www.cnblogs.com/PenZ/p/10318501.html
[6]https://www.cnblogs.com/jesse2013/p/aspnet-identity-claims-based-authentication-and-owin.html
[7]https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-9.0&tabs=visual-studio

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2249406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++设计模式-模板模式,Template Method

动机(Motivation) 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整…

Jenkins流水线 Allure JUnit5 自动化测试

目录 一、Jenkins Allure配置 1.1 安装Allure插件 1.2 安装Allure工具 1.3 配置测试报告路径 1.4 JenkinsFile 二、Jenkins 邮箱配置 2.1 安装Email Extension Plugin插件 2.2 邮箱配置 2.3 JenkinsFile 三、项目pom.xml 配置 3.1 引入allure-junit5依赖 3.2 引入m…

计算机网络 实验七 NAT配置实验

一、实验目的 通过本实验理解网络地址转换的原理和技术,掌握扩展NAT/NAPT设计、配置和测试。 二、实验原理 NAT配置实验的原理主要基于网络地址转换(NAT)技术,该技术用于将内部私有网络地址转换为外部公有网络地址,从…

shell脚本基础学习_总结篇(完结)

细致观看可以,访问shell脚本学习专栏,对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义: 2. 主要特点: 3. shell脚本的基本结构 4. S…

ACL的原理与配置

ACL技术概述 ACL;访问控制列表 技术背景: 园区重要服务器资源被随意访问,容易泄露机密,造成安全隐患 病毒侵入内网,安全性降低 网络宽带被各类业务随意挤占,服务质量要求高的宽带得不到保障&#xff0…

AWS 新加坡EC2 VPS 性能、线路评测及免费注意事项

原文论坛给你更好的阅读讨论体验💐: AWS 新加坡EC2 VPS 性能、线路评测及免费注意事项 - VPS - 波波论坛 引言 对于那些习惯薅“羊毛”的朋友来说, AWS 的 免费套餐 可能已经非常熟悉。这台vps是我用外币卡薅的免费的12个月的机器&#xf…

关于人工智能

关于人工智能 什么是人工智能 人工智能里面有智能两字,可不代表现在所谓的人工智能真的是智能的。 现在的人工智能是建立在学习上的,被称为机器学习(machine learning),或者说是深度学习(deep learning&…

MyBatis-缓存(一级缓存、二级缓存)

一、缓存(Cache) 1、定义:缓存是一种用于存储数据的硬件设备或存储空间(缓存不是内存)。 2、作用:减轻数据库压力,提高查询性能 3、实现原理:将从数据库中查询出来的对象/记录在使…

【Zookeeper】四,Zookeeper节点类型、通知、仲裁、会话

文章目录 Zookeeper的架构znode的版本Zookeeper的节点类型层级树状结构znode的不同类型 Zookeeper监视与通知通知的类型 Zookeeper的仲裁Zk的会话会话的生命周期 Zookeeper的架构 Zookeeper的服务器端运行两种模式:独立模式(standalone)和仲…

【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)

1、打开终端 2、步骤 (1)修改~/.zshrc文件 nano ~/.zshrc(2)添加或修改PS1,我是自定义了名字为“macminiPro” export PS1"macminiPro$ "(3)使用 nano: Ctrl o (字母…

macos 14.0 Monoma 修改顶部菜单栏颜色

macos 14.0 设置暗色后顶部菜单栏还维持浅色,与整体不协调。 修改方式如下:

树莓派3:64位系统串口(UART)使用问题的解决方法

前言 当我们要使用串口进行zigbee的短距离通信时,发现无法使用串口. 原因 树莓派3bCPU内部有两个串口,一个硬件串口(就是我们平时使用的UART),还有一个迷你串口(mini-uart),在老版本的树莓派中把硬件串口分配在GPIO上,可以单独使用.但是在新的树莓派中官方把硬件串口给了蓝牙…

前端Vue项目整合nginx部署到docker容器

一、通过Dockerfile整合nginx方法: 1,使用Vue CLI或npm脚本构建生产环境下的Vue项目。 npm run build or yarn build2,构建完成后,项目目录中会生成一个dist文件夹,里面包含了所有静态资源文件(HTML、CSS…

《Vue零基础入门教程》第十课:属性绑定指令

往期内容 《Vue零基础入门教程》第一课:Vue简介 《Vue零基础入门教程》第二课:搭建开发环境 《Vue零基础入门教程》第三课:起步案例 《Vue零基础入门教程》第四课:应用实例 《Vue零基础入门教程》第五课:挂载 《…

计算机网络socket编程(5)_TCP网络编程实现echo_server

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(5)_TCP网络编程实现echo_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交…

【适配】屏幕拖拽-滑动手感在不同分辨率下的机型适配

接到一个需求是类似下图的3D多房间视角,需要拖拽屏幕 问题 在做这种屏幕拖拽的时候发现,需要拖拽起来有跟手的感觉,会存在不同分辨率机型的适配问题。 即:美术调整好了机型1的手感,能做到手指按下顶层地板上下挪动&…

C#调用C++ DLL方法之C++/CLI(托管C++)

托管C与C/CLI前世今生 C/CLI (C/Common Language Infrastructure) 是一种用于编写托管代码的语言扩展,它是为了与 .NET Framework 进行互操作而设计的。C/CLI 是 C 的一种方言,它引入了一些新的语法和关键字,以便更好地支持 .NET 类型和垃圾…

python excel接口自动化测试框架!

今天采用Excel继续写一个接口自动化测试框架。 设计流程图 这张图是我的excel接口测试框架的一些设计思路。 首先读取excel文件,得到测试信息,然后通过封装的requests方法,用unittest进行测试。 其中,接口关联的参数通过正则进…

[RabbitMQ] 重试机制+TTL+死信队列

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

前端入门之VUE--基础与核心

前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。 Vue学习笔记 用于构建用户界面的渐进式框架 构建用户界面:基于数据动态渲染页面渐进式:循序渐近的学…