随着我国数字化转型浪潮的推进,越来越多的企业将项目管理协作的工作转移到线上,而面对企业各种定制化需求的业务逻辑,市场上很难有一款现成的项目管理平台能够做到开箱即用,很多企业都把精力放在了自建平台或外采定制化平台上。从零到一搭建一个项目管理平台会涉及很多技术要点,本文将重点讲解其中权限的部分。
一、登录权限
系统的登录权限验证是确保系统安全性的关键组成部分,一般企业内部都有单点登录系统或者使用IM工具登录等。所以对于项目管理平台来说,无需额外的登录模块及页面,只要对接SSO或IM工具来校验用户。用户登录验证的流程如下:
平台需自建用户表,用来存储用户。在设计表时应建立一些特殊字段来确定用户和其他系统的关联如:
二、资源权限
在系统开发中,当涉及到权限设计时,第一个想到的权限模型通常是“角色-权限”模型,也称为“RBAC”(Role-Based Access Control)模型。这是一种常用且有效的权限管理方法,特别适用于大型系统或组织,以及需要对用户进行不同级别的权限控制的场景。
在“角色-权限”模型中,权限控制主要基于以下几个概念:
1、角色(Role):
角色代表了一组相似权限需求的用户。每个用户可以被分配一个或多个角色,这些角色确定了用户在系统中可以执行的操作。
2、权限(Permission):
权限是系统中的某个功能、资源或操作。每个角色都与一组权限相关联,这些权限定义了该角色可以执行的操作。
3、用户(User):
用户是系统的实际使用者。用户被分配一个或多个角色,从而决定了他们在系统中的操作权限。
4、授权(Authorization):
授权是将角色与权限关联起来,以便在用户登录系统时确定其所具有的权限。
“角色-权限”模型的优点包括:
1、灵活性:
可以将权限分组成角色,使得管理和分配权限更加简化和灵活。
2、可扩展性:
随着系统的扩展,可以轻松地添加新角色和权限,而无需改变核心的权限逻辑。
3、易于维护:
角色和权限的管理和维护更加容易,可以集中管理用户权限,而不需要针对每个用户进行单独的设置。
4、安全性:
可以将用户按照其职责分配到不同的角色,从而降低了误操作或滥用权限的风险。
当然,在一些特殊情况下,也可能会考虑其他的权限模型,例如基于属性的访问控制(ABAC)模型、强制访问控制(MAC)模型等,这些模型可能更适合某些特定的应用场景和安全需求。但在绝大多数情况下,起步点通常是“角色-权限”模型。
因此,在RBAC模型中,用户、角色和资源之间存在多对多的关系,可以用以下关系图表示:
根据以上关系图,我们可以建立如下的表结构来实现RBAC模型:
1. 用户表(Users):
2. 角色表(Roles):
3. 资源表(Resources):
4. 用户角色关联表(UserRoles):
5. 角色资源关联表(RoleResources):
通过以上表结构,可以建立用户、角色、资源之间的关联关系,实现RBAC模型的访问控制机制。当用户需要访问资源时,系统可以根据用户的角色来查找相应的资源,以确定用户是否有权访问该资源。需要注意的是,这只是一个简化的示例,实际系统中可能需要更多的字段和关联来满足具体的需求。
三、关键代码
后端springboot代码示例:
1、实现ApplicationContextAware
2、定义基础类AbstractLoginStrategy
3、SSO认证类SsoStrategy 继承AbstractLoginStrategy
4、新建拦截器LoginInterceptorAdaper用于拦截用户登录
5、新建拦截器AuthInterceptor用于拦截路由资源的请求
前端Vue代码示例:
1、例如某一个按钮要增加权限控制
2、main.js中增加
3、permission.js如下:

