首页 > 其他分享 >app.UseAuthentication()、app.UseAuthorization() 及其它

app.UseAuthentication()、app.UseAuthorization() 及其它

时间:2024-01-14 14:55:45浏览次数:27  
标签:ClaimsPrincipal 请求 中间件 app UseAuthentication 身份验证 UseAuthorization

首先,这两段代码拼写就比较容易混淆,一个是UseAuthentication,一个是UseAuthorization,很容易看混。

  • app.UseAuthentication(); 这个方法代表"认证"中间件的添加,这个中间件负责对来自客户端的请求进行认证,也就是说,它会把请求中包含的用户信息(比如一个cookie或者token)解释出来,然后构建出一个代表用户身份的ClaimsPrincipal对象。这个ClaimsPrincipal对象包含了用户的多个身份标识和相关信息(Claims,比如用户名,角色等)。所以,简单说,app.UseAuthentication();就是告诉应用,对于每一个请求,都需要找出谁在请求,也就是确定请求的发起者是谁。
    UseAuthentication中间件的工作过程如下:
    1. 当请求到达UseAuthentication中间件时,中间件会查看请求中是否包含某种形式的凭据(如cookies、headers等)。
    2. 如果找到了凭据,UseAuthentication就会触发相应的身份验证处理程序来验证这些凭据。每种凭据类型(如Bearer token、cookies等)通常对应一个身份验证处理程序。
    3. 如果验证成功,处理程序将创建一个表示用户身份的ClaimsPrincipal对象,并将其设置为当前HTTP上下文的用户(HttpContext.User)。
    4. 如果验证失败或请求中没有找到凭据,HttpContext.User将为null。
  • app.UseAuthorization(); 这个方法代表"授权"中间件的添加,这个中间件负责根据认证中间件建立的ClaimsPrincipal进行授权判断,也就是根据用户的身份信息决定用户能否有权访问请求的资源(比如一个特定的Controller或者一个Action)。所以,简单说,app.UseAuthorization();就是告诉应用,确定了谁在请求后,还需要判断其是否有权限请求这个资源。

Authentication  决定是否可以做( 验证登录凭证)

Authorization 决定可以用来做什么(鉴权)

 

Authentication  构建出 ClaimsPrincipal,供Authorization 进行鉴权。

 

Authentication scheme 是什么

身份验证方案,用来定义应用如何处理身份验证的策略或规则。

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme);

"JwtBearerDefaults.AuthenticationScheme" 就是一个身份验证方案,它告诉 ASP.NET Core 使用 JwtBearer 身份验证作为默认的身份验证方案。

 

Authentication handler 是什么

身份验证处理程序(Authentication Handlers)是进行特定身份验证方案(Authentication Schemes)处理的组件。

一个身份验证处理程序是一个实现了 IAuthenticationHandler 或 IAuthenticationSignInHandler 接口的类。当你调用 AddAuthentication 方法注册身份验证服务时,会将各个身份验证处理程序添加到 ASP.NET Core 的 DI(依赖注入)系统中。

 

最常见的身份验证处理程序包括 JwtBearerHandler(封装了 JWT Bearer 身份验证的逻辑)和 CookieAuthenticationHandler(封装了 Cookie 身份验证的逻辑)等。

 

ClaimsPrincipal 是啥

 ClaimsPrincipal是.NET中用于表示当前用户的类。它可以包含一个或多个ClaimsIdentity,每个ClaimsIdentity代表一个用户的唯一身份。ClaimsPrincipal通过这些ClaimsIdentity提供关于用户身份的信息,包括用户名、角色等。 示例
// 检查用户是否属于某个角色:
bool isInRole = HttpContext.User.IsInRole("Admin");
//获取用户名
string username = HttpContext.User.Identity.Name;

 

 





 

标签:ClaimsPrincipal,请求,中间件,app,UseAuthentication,身份验证,UseAuthorization
From: https://www.cnblogs.com/xieweikang/p/17963532

相关文章

  • uni-app中的推送
    需求:最近公司要做推送,用的是uni-app,这里备注一下 App.vue里这样操作:分别是iOS和Android的在线创建推送,以及点击事件的处理,这里点击事件存储一下,然后发送消息在首页处理推送。如果在这里处理,会有先跳转推送页再返回首页的问题。plus.push.addEventListener('click',fu......
  • uniapp的video组件在层级太高,无法遮挡的问题
    uniapp-vue项目中需要播放视频,uniapp的video组件在层级太高,无法遮挡,所以使用原生dom的video标签在APP中播放视频,可以被其他元素进行覆盖、遮挡,页面具有更高的定制性<!--eslint-disable--><template><viewv-html="videoHtml"id="dom-video"class="dom-video......
  • Azure Logic Apps
      在AzureSentinel中,AzureLogicApps可以用于增强和自动化安全操作和响应。它们可以作为安全编排自动化响应(SOAR)的一部分,帮助自动化和简化安全工作流程。以下是一些具体的应用实例: 数据富集和分析:例子:在接收到安全警报时,使用LogicApp来自动从其他源(如威胁情报数据......
  • Next.js 开发指南 路由篇 | App Router
    Next.js开发指南路由篇|AppRouter 前言路由(routers)是应用的重要组成部分。所谓路由,有多种定义,对于应用层的单页应用程序而言,路由是一个决定URL如何呈现的库,在服务层实现API时,路由是解析请求并将请求定向到处理程序的组件。简单的来说,在Next.js中,路由决定了一个页......
  • 如何再造宇宙厂所有App?
    本文内容,纯属十年老架构师杜撰,切勿照着实操,可能会给你带来几十亿的流量,怕你的服务器扛不住。破音前端用uniapp,花800买个短视频应用模板,后端用golang支持高并发,数据库用图数据库加elasticsearch,用户关系用图数据库,内容元数据直接放在elasticsearch,方便搜索,视频,音频,图片......
  • uniapp---下拉刷新上拉加载
    在用uniapp做APP的时候,下拉刷新,上拉加载是常见的功能需求,现在整理一下: 第一步:设置下拉和上拉属性找到【pages.json】设置:"enablePullDownRefresh":true,"onReachBottomDistance":100,示例: 第二步:页面新增下拉和上拉方法onPullDownRefreshonReachBottom示例:<sc......
  • Applescript成功实现imessage数据筛选,imessage蓝号检测,无痕检测手机号是否注册imess
    一、imessages数据检测的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2.编写苹果MacOs......
  • 《RAPL: A Relation-Aware Prototype Learning Approach for Few-Shot Document-Level
    代码 原文地址 预备知识:1.什么是元学习(MetaLearning)?元学习或者叫做“学会学习”(Learningtolearn),它是要“学会如何学习”,即利用以往的知识经验来指导新任务的学习,具有学会学习的能力。由于元学习可帮助模型在少量样本下快速学习,从元学习的使用角度看,人们也称之为少次......
  • 免费APP分发,支持应用合并、内测分发、扫码下载,下载量安装量统计,版本记录和应用在线封
    免费APP内测分发托管平台,支持应用合并、内测分发、扫码下载,下载量安装量统计,版本记录和应用在线封装打包app应用分发?应用分发也叫APP分发,其主要功能是方便APP的快速安装测试和推广那么分发App选择什么平台最好呢?这个主要是看App处于什么阶段。看看是处于应用测试阶段还是处于测......
  • 10.App 抓包实战练习
    目录 抓包原理常用应用场景接口抓包分析实战抓包原理 常用应用场景 解决移动端接口测试解决接口测试过程中检查传参错误问题mock测试接口抓包分析实战 抓取接口数据Overview:接口的大体情况Content:请求信息和响应信息上半部分:请求,请......