Asp.Net芯基于JWT认证的数据接口网关示例代码
前言
最近应朋友邀请,写了一篇基于JWT认证的Asp.Net芯数据接口网关Demo。朋友自己开了家公司,接了个升级项目。客户要求使用Aps.Net芯作为数据网关服务,实现基于JWT认证的前端分离的数据服务支持。所以我以为我一直在做。Net开发,问我知不知道。网络核心。你能做个简单的演示看看吗?我说,分道扬镳之后,我要么调用别人的接口,要么提供一个接口让别人调用,所以我有了下面的示例代码。
该示例要求您演示如何获取令牌并使用它访问数据资源。在演示中,您可以发布和验证JWT,并重写ActionAuthorizeAttribute来控制特定数据接口的调用权限。首先,看一下项目的截图:
[项目截图]
项目文件介绍
解决方案下只有一个项目,项目名为Jwt。网关,包括的主要文件有:
控制器目录中的ApiActionFilterAttribute.cs文件继承了微软。aspnetcore . MVC . filters . actionfilterattribute,用于验证接口调用方对特定接口的访问权限。控制器目录下的ApiBase.cs文件继承了微软。并且具有微软的特色参考。aspnetcore . authorization . authorization,用于所有数据接口目的的控制器继承。定义了属性CurrentAppKey(访问应用程序的标识),并在操作执行事件中统一分析和分配声明。控制器目录中的令牌控制器. cs控制器文件,用于获取和取消调用方应用程序的令牌。控制器目录中的UsersController.cs控制器文件继承了作为数据调用示例的ApiBase.cs。中间件目录中的ApiCustomException.cs文件是一个统一的带有数据接口的异常处理中间件。Models目录中的ApiResponse.cs文件用作数据接口的统一数据和错误信息输出实体模型。模型目录中的User.cs文件是一个示例数据实体模型。不会引入Program.cs和Startup.cs的文件,随便建一个空项目。项目文件代码
ApiActionFilterAttribute.cs
控制器目录中的ApiActionFilterAttribute.cs文件继承了微软。aspnetcore . MVC . filters . actionfilterattribute,用于验证接口调用方对特定接口的访问权限。
想象一下,每一个访问请求都是一个应用程序,每个应用程序都被分配了基本的Key和Password,每个应用程序都有不同的接口访问权限,所以接口所需的权限值应该在具体的数据接口上声明。例如,修改用户信息的接口应该在接口方法上声明它需要“修改用户”的权限。用例:[ApiActionFilter('用户修改')]。
在大多数情况下,一个接口(方法)对应一个操作,基本可以应付,但不排除有时可能需要多个权限组合进行验证,因此在这个文件中有一个“and”和“AND”的枚举用于验证多个权限值。用例:[ApiActionFilter(新字符串[] { '用户修改','用户输入','用户删除' }。
由于可能需要记录接口调用后声明的所需权限值,权限值集将被写入httpcontext。项['权限']以方便可能的后续操作访问。请参见代码:
使用系统;使用系统。集合。通用;使用系统。Linq使用系统。线程化。任务;使用微软。AspNetCore . Mvc.Filters命名空间Jwt。网关控制器{公共枚举APIactionFilterAttributeOption { OR,AND }公共类ApiActionFilterAttribute :微软。AspNetCore . MVC . filters . actionfilte
版权声明:Asp.Net芯基于JWT认证的数据接口网关示例代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。