Asp.NET Core 中的 认证授权 详解和使用

跟着阿笨一起玩NET

共 1251字,需浏览 3分钟

 · 2024-04-10

Asp.NET Core 中的 认证授权 详解和使用 - 醉马踏千秋 - 博客园 https://www.cnblogs.com/abc1069/p/16058146.html


什么是 验证 和 授权?

身份验证(authentication):是确定用户身份的过程

授权(authorization ):是确定用户(已经验证成功的用户)是否有权访问资源的过程。

 

身份验证

职责:

  • 对用户进行身份验证。

  • 在未经身份验证的用户试图访问受限资源时作出响应。

现在,我们对一个 action 方法上添加 authorize 特性,这表明我们对这个接口进行了授权: 

[HttpGet]
[Authorize]
public IEnumerable Get(){
return new string[] {"数据1", "数据2"};
}

如果我们直接访问这个接口,会报如下错误:

30fcea3dffb1090aa00f1cbe07cdbf8c.webp

意思是:你定义了授权,但没有指定任何(包括自定义和官方的) 身份验证方案;

授权Authorization 和 认证Authentication 是相辅相成的;两者缺一不可。

 

解决的方法,其实报错信息已经告诉你了;即:添加认证方案的支持,其实,认证方案有很多,但是现在主要推荐的还是 Jwt Bearer 身份验证方案:

1、Nuget 中安装 Microsoft.AspNetCore.Authentication.JwtBearer 包;

2、然后再 ConfigurationServices 中添加对 身份验证的方案(包括使用什么方案,这个方案需要做什么样子的配置) 做注入容器中处理:

34893c22b3a16b91613ea1640a5244a6.webp

提醒:根据报错信息,他有两种写法,

5e6f9bc590a2621ba7ed2cbb8beadbb4.webp

下面是第二种:

7feb7340a59c0dfc65d8403715065e09.webp

401 Unauthorized:未经授权,身份认证不通过,未认证,可能:无令牌,令牌无效、失效(因为你没有使用有效的token,无法通过 身份认证 Authentication)

403 Forbidden:被禁止,即:令牌通过,但是你无权限。


授权

上面例子中,我么用 authorize 这个特性作用于一个 action 方法上了,这就是授权,对这个action进行了权限限制;

但是,这种简单的授权,是只要有效的token(即:身份验证通过),就能访问这个接口,而没有精细化处理(就好比:董事长有这权限、行政也有着权限、而员工没有这权限);

asp.net core 的授权分三种

1、普通的授权(上面已经讲了)

2、基于角色的授权

3、基于策略的授权



浏览 2
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报