asp.net core 授权详解

IAuthorizeDate接口代表了授权系统的源头:

public interface IAuthorizeData
{
  string Policy { get; set; }
  string Roles { get; set; }
  string AuthenticationSchemes { get; set; }
}

接口中定义的三个属性分别代表了三种授权类型:

1、基于角色的授权:

[Authorize(Roles = "Admin")] // 多个Role可以使用,分割
public class SampleDataController : Controller
{
  ...
}

2、基于scheme的授权:

[Authorize(AuthenticationSchemes = "Cookies")] // 多个Scheme可以使用,分割
public class SampleDataController : Controller
{
  ...
}

3、基于策略的授权:

[Authorize(Policy = "EmployeeOnly")]
public class SampleDataController : Controller
{

}

基于策略的授权是授权的核心,使用这种授权策略时,首先要定义策略:

public void ConfigureServices(IServiceCollection services)
{
  services.AddMvc();

  services.AddAuthorization(options =>
  {
    options.AddPolicy("EmployeeOnly", policy => policy.RequireClaim("EmployeeNumber"));
  });
}

授权策略本质上就是对claims的一系列断言。

而基于角色和基于scheme的授权都是一种语法糖,最终会转换为策略授权。

以上就是关于asp.net core 授权的知识点内容,如果大家有任何疑问可以联系我们小编。

(0)

相关推荐

  • .Net Core3 用Windows 桌面应用开发Asp.Net Core网站

    前言 曾经在开发 Asp.Net 网站时就在想,为什么一定要把网站挂到 IIS 上?网站项目的 Main 函数哪儿去了?后来才知道这个 Main 函数在 w3wp.exe 里,这也是 IIS 的主进程.Asp.Net 网站的命门被 IIS 捏着,我无力改变.有时需要临时搭建一个简单的 Web 服务器,去网上一通度娘,发现了MyWebServer.HFS (HTTP File Server) 等简单实用的 Web 服务器,而且它们还是桌面应用.我就在想,什么时候能用 .Net 来开发一个桌面 We

  • Asp.Net Core Identity 隐私数据保护的实现

    前言 Asp.Net Core Identity 是Asp.Net Core 的重要组成部分,他为 Asp.Net Core 甚至其他 .Net Core 应用程序提供了一个简单易用且易于扩展的基础用户管理系统框架.它包含了基本的用户.角色.第三方登录.Claim等功能,使用 Identity Server 4 可以为其轻松扩展 OpenId connection 和 Oauth 2.0 相关功能.网上已经有大量相关文章介绍,不过这还不是 Asp.Net Core Identity 的全部,其中

  • ASP.NET Core 3.0 gRPC拦截器的使用

    一. 前言 前面两篇文章给大家介绍了使用gRPC的入门以及双向流的使用,今天介绍的是gRPC中的拦截器.拦截器就像MVC的过滤器或者是ASP.NET Core middleware 一样,具有面向切面的思想,可以在调用服务的时候进行一些统一处理, 很适合在这里处理验证.日志等流程.本片文章就以记录日志为例来进行讲解. 二. Interceptor 类介绍 Interceptor类是gRPC服务拦截器的基类,是一个抽象类,它定了几个虚方法,分别如下: public virtual TRespons

  • 浅谈ASP.NET Core的几种托管方式

    Kestrel Kestrel 是一个跨平台的适用于 ASP.NET Core 的 Web 服务器,默认包括在 ASP.NET Core 项目模板中. Kestrel 支持以下方案: HTTPS 用于启用 WebSocket 的不透明升级 用于获得 Nginx 高性能的 Unix 套接字 HTTP/2(除 macOS† 以外) 可以单独使用 Kestrel,也可以将其与反向代理服务器 (如 Internet Information Services (IIS).Nginx 或 Apache)结合

  • ASP.NET Core 3.0使用gRPC的具体方法

    一.简介 gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架. gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建.它使用HTTP/2作为通信协议,使用 Protocol Buffers 作为序列化协议. 它的主要优点: 现代高性能轻量级 RPC 框架. 约定优先的 API 开发,默认使用 Protocol Buffers 作为描述语言,允许与语言无关的实现. 可用于多种语言的工具,以生成强类型的服务器和客户端. 支持客户端,服务器双向流调

  • asp.net core 授权详解

    IAuthorizeDate接口代表了授权系统的源头: public interface IAuthorizeData { string Policy { get; set; } string Roles { get; set; } string AuthenticationSchemes { get; set; } } 接口中定义的三个属性分别代表了三种授权类型: 1.基于角色的授权: [Authorize(Roles = "Admin")] // 多个Role可以使用,分割 pub

  • 浅谈ASP.NET Core 中间件详解及项目实战

    前言 本篇文章是我们在开发自己的项目中实际使用的,比较贴合实际应用,算是对中间件的一个深入使用了,不是简单的Hello World. 中间件(Middleware)的作用 我们知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终到达我们写的代码中.那么中间件就是在应用程序管道中的一个组件,用来拦截请求过程进行一些其他处理和响应.中间件可以有很多个,每一个中间件都可以对管道中的请求进行拦截,它可以决定是否将请求转移给下一个中间件. asp.net

  • ASP 中 DateDiff 函数详解 主要实现两日期加减操作

    ASP 中 DateDiff 函数详解DateDiff 函数 描述  返回两个日期之间的时间间隔.  语法  DateDiff(interval, date1, date2 [,firstdayofweek][, firstweekofyear]])  DateDiff 函数的语法有以下参数: 参数 描述  interval 必选.字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔.有关数值,请参阅"设置"部分.  date1, date2 必选.日期表达式.用于计

  • ASP.NET Core学习之使用JWT认证授权详解

    概述 认证授权是很多系统的基本功能 , 在以前PC的时代 , 通常是基于cookies-session这样的方式实现认证授权 , 在那个时候通常系统的用户量都不会很大, 所以这种方式也一直很好运行, 随着现在都软件用户量越来越大, 系统架构也从以前垂直扩展(增加服务器性能) -> 水平扩展(增加服务器数量) cookies-session 工作方式 客户端提交用户信息 -> 服务器识别用户 -> 服务端保存用户信息 -> 返回session-id客户端 -> 客户端保存ses

  • asp.net FreeTextBox配置详解

    如图所示: 这就是我们在网页上编辑文字时经常使用的东西. 用asp.net做网站时经常用到它,下面来讲讲如何在asp.net中添加freetextbox组件. 预备工作:下载freetextbox,可以去官网 http://freetextbox.com 上下载最新版本,也可以去gougou.com上下载个中文版. 压解后的 freetextbox.dll 文件就是我们要用到的. 现在开始配置: 1.打开vs2005,新建网站,在"解决方案"中的项目下点右键,选择"添加引用&

  • ASP.NET Session使用详解

    Session模型简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份.这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串,我们会在下面的实验中见到它的实际样子. 这个唯一的SessionID是有很大的实际意义的.当一个用

  • 微信开发 微信授权详解

    最近有机会做到一个微信项目:把其中自己整理的笔记分享给大家,有不足或错误的地方望大家指正! 1关于微信授权这块的流程图,如下 一些代码碎片仅供参考: var myNickname; var myHeadimgurl; var activityId; function saveData() { //$("#divShow").show(); var obj = {}; obj.openId = myOpenId; obj.nickname = myNickname;// 微信昵称 obj

  • ASP.net 路径问题 详解

    偶尔还会因路径的问题郁闷了半天 还以为是程序上出了问题了.以下我是转自--我们 里的一篇技文,略作修改,以备不时只需,各位有需要的也可参考参考,有错的也请各位指出. 比如你的工程是Webapplication1(url是:http://localhost/webapplication1/webform1.aspx) Request.ApplicationPath 就是/Webapplication1 如果是站点就直接返回"/"; ----------------------------

  • ASP.NET站点导航应用详解

    导航实际上给访问者提供了一个地图类似的东西,让访问者更快地找到想要的东西. 在2.0中引入了一个很重要的概念,那就是站点地图siteMap这样一个XML文件,但是它后缀不是XML. 若要为站点创建一致的.容易管理的导航解决方案,可以使用asp.net站点导航.asp.net站点导航提供下列功能: 在了解了一些基本知识后,我们来做一个简单的导航的例子. 1.首先创建一个master html代码: <%@ Master Language="C#" AutoEventWireup=&

  • ASP.NET三层架构详解 如何实现三层架构

    一.数据库 /*==============================================================*/ /* DBMS name: Microsoft SQL Server 2000 */ /*==============================================================*/ if exists (select 1 from sysobjects where id = object_id('newsConte

随机推荐