如何用ASP.NET Core的IActionFilter拦截器实现权限控制?
摘要:“麦荻网教系统”采用了前后端代码分离的架构,即“Miidy.Cloud.Console”站与“Miidy.Cloud.Manage”站(两个前端站)同时通过web api的方式调用“Miidy.Cloud.RestWeb” web服务,以达
“迈信达网教系统”采用了前后端代码分离的架构,即“Miidy.Cloud.Console”站与“Miidy.Cloud.Manage”站(两个前端站)同时通过web api的方式调用“Miidy.Cloud.RestWeb” web服务,以达到前后端代码分离的方式(详情请查看迈信达网教系统的安装部署文档)。因为“Miidy.Cloud.Manage”站只开放给具备管理权限的用户,故除了在前端增加控制外,还需在“Miidy.Cloud.RestWeb” web服务内进行权限控制。那么,如何在“Miidy.Cloud.RestWeb” web服务内根据用户实现权限控制呢?
IActionFilter
在“Miidy.Cloud.RestWeb”程序内,我们将借助IActionFilter接口来实现请求的拦截。该接口提供了两个方法(官网文档)分别为:OnActionExecuted(Action执行后)、OnActionExecuting(Action执行前)。根据需求,我们实现OnActionExecuting即可。
Attribute
我们再借助“Attribute”属性特性,可帮助我们在“Miidy.Cloud.RestWeb”指定的方法内按需使用拦截器,这样便可很方便的达到权限控制的目的。
实现
如上面所述,我们已经清楚了整个实现思路,那么下面就来看看“Miidy.Cloud.RestWeb”程序拦截器的代码实现吧:
1、首先我们先创建一个名为“ManageVerifyAttribute”的拦截器类,命名以“Attribute”结尾,并继承“Attribute”类,与实现“IActionFilter”。并在OnActionExecuting方法内写入业务代码。
