ABP 权限系统介绍

第一次写博客,文笔不好还请包涵。
本博文面向ABP新人,使用ASP.NET Zero项目讲解。
     首先需要知道的是权限数据和权限角色关系数据存储在哪里:
     ABP的所有权限存储在代码XX.AbpZeroTemplate.Core.AppAuthorizationProvider中,以树结构的形式存在。权限数据主要包含权限名称,权限显示名,是否默认,租户端或者租户主端等。
     当在界面上修改角色的权限的时候,会获取并显示这些权限数据。用户勾选其中的权限,保存后每个选中权限对应的权限名称都会跟角色ID对应并保存在AbpPermissions(角色权限关系表)表里。

     其次是菜单如何对应权限:
     ABP菜单数据也是存储在代码中,SPA在XX.AbpZeroTemplate.Web.App.Startup.AppNavigationProvider中,MPA在XX.AbpZeroTemplate.Web.Areas.Mpa.Startup.MpaNavigationProvider中,每个菜单对应有一个权限,如果登录角色选择了这个权限,那么在登录后会根据角色权限关系表过滤当前角色才拥有的权限的菜单。

     再者权限还需要限制页面及功能:
     权限也反映在Controller和服务上,这些权限都是在类和服务上通过Atrribute设定好的,如果你访问的Controller,Action或者Service没有当前角色对应的权限,那么访问会被拒绝。
     权限还体现在页面功能上,ABP系统通过js嵌入后台服务AbpScripts.GetScripts获取当前角色全部权限,其中当然包括页面功能权限,然后页面上会写固定代码判断是否有这个权限来隐藏会显示对应的功能。

这样基础的权限系统就讲完了,其中涉及到的更深入的问题待后续博文讲解。

posted on 2016-04-12 11:48  williamXX  阅读(1106)  评论(0)    收藏  举报

导航