网站平台怎么建立的,太原百度网站排名优化,网站搭建网站管理,wordpress大量发文章ShenNius.Admin.API项目中的控制器类的函数如果需要访问控制#xff0c;主要是调用ShenNius.Infrastructure项目下的AuthorityAttribute特性类实现的。AuthorityAttribute继承自ActionFilterAttribute抽象类#xff0c;后者用于在调用控制器操作函数前后自定义处理逻辑#… ShenNius.Admin.API项目中的控制器类的函数如果需要访问控制主要是调用ShenNius.Infrastructure项目下的AuthorityAttribute特性类实现的。AuthorityAttribute继承自ActionFilterAttribute抽象类后者用于在调用控制器操作函数前后自定义处理逻辑主要支持以下几种事件。AuthorityAttribute类重写了OnActionExecuting事件处理函数用于在调用控制器类的函数前进行访问控制检查。 访问控制的整体思路还是先检查是否登录用户然后再根据当前用户权限判断是否能调用当前控制器的指定函数。具体如下 1根据当前上下文中的User.Identity.IsAuthenticated属性判断是否为登录用户未登录则不允许访问 2如果是DEBUG模式且当前用户有管理员权限则不需要访问控制。通过在上下文的User.Claims查找是否有主键为IsAdmin且值为1的数据。但是从源码来看MVC模式下调用ShenNius.Admin.Mvc的UserController.Login函数登录时用户声明中有IsAdmin信息但在前后端分类模式下调用ShenNius.Admin.API的UserController.SignIn函数登录时暂时没有看到设置IsAdmin声明信息的代码 3从函数输入参数中调用ActionExecutingContext.ActionDescriptor. RouteValues获取要访问的控制器类及函数再从上下文中获取当前用户标识及权限缓存依次判断当前用户是否有权限访问但有特例如果函数名为GetListPages则直接放过。如果是MVC模式则在用户登录函数中登录验证通过后会调用MenuRepository.GetCurrentAuthMenus函数获取当前用户权限并返回前端。但是在前后端分类模式下暂时没有看到是在什么时候获取并保存的当前用户权限。
参考文献 [1]https://gitee.com/shenniu_code_group/shen-nius.-modularity