权限设计,可控制每个接口的使用。

权限功能设计说明

1     功能介绍

1.1   已实现功能

用户管理

Ø  新增用户信息

Ø  删除用户信息

Ø  修改用户信息

Ø  查看用户信息

Ø  分配角色

角色管理

Ø  新增用户角色

Ø  删除用户角色

Ø  修改用户角色

Ø  查询用户角色

Ø  分配用户

权限验证

验证匿名用户权限:匿名用户只能访问登录、获取验证码、判断是否登录等无需授权功能。

验证授权用户权限:只允许访问公共接口(获取下拉数据、获取地址信息等接口)和已授权接口。

 

1.2   用户管理模块

见表结构介绍。

1.3   角色管理模块

见表接口介绍。

1.4   验证功能验证模块

未登录验证

客户端访问接口:访问服务器某个接口并至少传一个参数(这里用的是页面唯一编码)。

服务端验证权限:判断当前接口是否允许匿名用户访问。是:允许访问;否:不允许访问。

已登录验证

客户端访问接口:访问服务器某个接口并至少传一个参数(这里用的是页面唯一编码)。

服务端验证权限:判断当前接口是否允属于公共接口,是:允许访问;否:判断当前用户是否拥有该权限,是:允许访问;否:不允许访问。

 权限设计,可控制每个接口的使用。_第1张图片

 

权限验证流程图

1.5   表结构

Menu(菜单表)

用于存放菜单信息,包括菜单名称、图标、样式、菜单对应的URL等,多级菜单需要存菜单级别、父级ID。

MenuFunction(菜单功能表)

用于存放菜单所对应的接口编码、接口所属菜单(如果一个接口存在多个菜单下,同时需要存多条数据)、接口所属页面(只所以要存页面是为了控制页面上按钮的权限,方便前端做权限验证)、接口所属操作ID(页面按钮ID)。

Role(角色表)

用于处方用户和角色关系,目前用户和角色做的是一对一关系。

RoleFunction(角色功能表)

用于存放角色和功能接口对应关系,此表为业务核心表。用于验证用户是否有访问权限。

表结构详情:

Menu(菜单表)

名称

代码

主键ID

ID

菜单URL

MenuUrl

菜单名称

PageName

状态(1:启用,0禁用)

Status

菜单级别

Level

父级ID

ParentID

NO

NO

创建时间

CreateTime

修改时间

ModifyTime

排序

Sort

icon

icon

      

       MenuFunction(菜单功能表)

名称

代码

主键ID

ID

功能编码(功能分类)

FuncCategory

功能名称

Name

菜单ID

MenuID

页面编码

PageCode

操作id(页面按钮ID)

OperateID

接口id

Interface

类型(1:默认接口,2:对外接口,3:通用接口)

Type

NO

NO

创建时间

CreateTime

修改时间

ModifyTime

排序

Sort

状态(1:启用,2:禁用)

接口访问级别0匿名1登录即可访问2授权才能访问

Status

AccessLevel

 

       Role(角色表)

名称

代码

ID

ID

角色名称

RoleName

自动排序

NO

状态

Status

创建时间

CreateTime

修改时间

ModifyTime

用户微信昵称

CreateID

ModifyID

ModifyID

 

       RoleFunction(角色功能表)

名称

代码

主键ID

ID

自增量

NO

角色ID

RoleID

菜单id

MenuID

功能id

FuncID

功能分类

FuncCategory

按钮标识

OperateID

接口id

Interface

页面编码

PageCode

状态(1.启用,2.禁用)

Status

类型(1.菜单,2.功能,3.第三方接口)

Type

创建时间

CreateTime

修改时间

ModifyTime

排序

Sort

接口访问级别0匿名1登录即可访问2授权才能访问

AccessLevel

 权限设计,可控制每个接口的使用。_第2张图片

 

 

1.6   代码

前端

1.      封装get、post、getAsnyc和postAsync方法,传入pageCode参数。

权限设计,可控制每个接口的使用。_第3张图片

 

2.      页面添加pageCode全局变量

权限设计,可控制每个接口的使用。_第4张图片

 

3.      菜单根据用户权限自动加载

权限设计,可控制每个接口的使用。_第5张图片

4.      页面按钮权限控制(在页面控制按钮权限,减少接口调用的压力)

权限设计,可控制每个接口的使用。_第6张图片

权限设计,可控制每个接口的使用。_第7张图片

权限设计,可控制每个接口的使用。_第8张图片

后端

Ø  权限验证公共类:

1.      验证当前接口是否属于看匿名访问接口

权限设计,可控制每个接口的使用。_第9张图片

2.      验证当前接口是否已授权

Ø  调用权限验证:

1.      Base类添加权限验证方法,此处分三部分验证1、验证当前调用的接口是否属于可匿接口;2验证当前用户是否登录超时;3、验证当前接口是否允许调用。

权限设计,可控制每个接口的使用。_第10张图片

 

2.      集成Base类,执行功能前调用Base类中权限验证方法。

权限设计,可控制每个接口的使用。_第11张图片

 

你可能感兴趣的:(.net,权限设计,.net,权限设计)