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

权限功能设计说明

1     功能介绍

1.1   已实现功能

用户管理

Ø  新增用户信息

Ø  删除用户信息

Ø  修改用户信息

Ø  查看用户信息

Ø  分配角色

角色管理

Ø  新增用户角色

Ø  删除用户角色

Ø  修改用户角色

Ø  查询用户角色

Ø  分配用户

权限验证

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

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

 

1.2   用户管理模块

见表结构介绍。

1.3   角色管理模块

见表接口介绍。

1.4   验证功能验证模块

未登录验证

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

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

已登录验证

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

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

 

 

权限验证流程图

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

 

 

 

1.6   代码

前端

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

 

2.      页面添加pageCode全局变量

 

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

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

后端

Ø  权限验证公共类:

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

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

Ø  调用权限验证:

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

 

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

 

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在设计 PHP 的 API 接口时,需要注意以下几点: 1. 接口的安全性:应确保 API 接口能够安全地保护数据和资源,并防止未经授权的访问。 2. 接口的可用性:应确保 API 接口能够稳定地提供服务,并保证高可用性。 3. 接口的简易性:应设计简单易用的 API 接口,方便开发人员调用。 4. 接口的文档:应为 API 接口提供详细的文档,包括接口地址、请求方式、请求参数、响应数据等信息。 5. 接口的版本控制:应对 API 接口进行版本控制,以便在不影响现有应用程序的情况下对接口进行更新。 6. 接口的访问限制:可以考虑对 API 接口设置访问限制,如 IP 限制、API key 验证等。 ### 回答2: 设计一个PHP的api接口时需要注意以下几点: 1. 安全性:API接口需要确保数据传输的安全性,可以使用HTTPS协议来加密数据传输。此外,还需要通过身份验证和访问控制来保护接口免受未授权访问。 2. 响应格式:API接口应该返回标准化的数据格式,如JSON或XML。这样可以方便客户端对返回数据进行解析和处理。 3. 错误处理:在接口设计中,需要考虑各种可能的错误情况,并返回相应的错误码和错误信息给客户端。这有助于客户端进行错误处理和故障排除。 4. 模块化设计:建议将API接口设计成模块化的形式,即将不同功能的接口封装成独立的模块。这样可以提高代码的可维护性和可扩展性。 5. 接口版本控制:如果API接口存在需求变更或新增功能的可能性,建议设计接口版本控制机制,以便客户端可以选择使用不同版本的接口。 6. 缓存处理:对于一些频繁请求但不经常变动的数据,可以考虑在接口中加入缓存机制,提高接口的性能和响应速度。 7. 日志记录:为了方便排查问题和监控接口的运行情况,需要在接口中加入日志记录功能,记录请求和响应的相关信息。 8. 文档和示例:为了便于开发者理解和使用接口,需要提供详细的接口文档和示例代码。文档中应包含接口的请求方式、参数列、返回值等信息。 9. 性能考虑:在接口设计时需要考虑接口的性能,尽量避免不必要的数据查询和计算,合理使用缓存和异步处理等技术手段来提高接口的性能。 10. 异常处理:在接口中需要考虑各种异常情况的处理,包括数据库连接异常、文件读写异常等。合理的异常处理可以提高接口的稳定性和可靠性。 ### 回答3: 设计一个PHP的API接口需要注意以下几点: 1. 功能明确:在设计API接口时,需要明确接口的功能,定义好每个API的用途和参数,确保功能的准确性和完整性。 2. 接口设计规范:遵守RESTful规范,通过合理的URI命名、请求方法(GET、POST、PUT、DELETE等)来实现不同操作,使接口易于理解和使用。 3. 参数验证与过滤:在接口中对传入的参数进行验证和过滤,确保参数的合法性,防止恶意攻击和错误数据的传入。 4. 错误处理与异常处理:当接口出现错误或异常时,需要进行相应的错误处理,返回合适的错误码和错误信息,方便接口调用者进行问题排查和调试。 5. 安全性考虑:对于涉及用户隐私或敏感数据的接口,需要进行身份验证和权限控制,确保只有合法的用户可以访问和操作接口。 6. 接口版本管理:当接口需要升级或变更时,需要考虑版本管理,防止因接口变更导致现有功能出错或不可用。 7. 接口文档和注释:设计API接口时,应编写清晰的接口文档和注释,描述接口的用法、参数和返回值,方便其他开发人员使用和理解。 8. 性能优化:在设计API接口时应考虑性能优化,例如使用缓存、减少数据库查询等方法,提高接口的响应速度和可扩展性。 9. 日志记录与监控:为了方便问题排查和系统监控,API接口需要进行日志记录,记录调用的请求和返回结果,方便定位问题和分析接口调用情况。 10. 接口的稳定性与兼容性:设计API接口时要考虑接口的稳定性和兼容性,尽量避免频繁的接口变更,确保接口的稳定性,减少对接口调用者的影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值