设计思路
- 权限级别定义:使用静态属性来定义不同的权限级别,这样便于统一管理和引用。
- 权限验证方法:
canAccess
方法接收当前用户权限和目标资源所需权限作为参数。考虑权限继承和组合,通过预先定义的权限关系规则来判断用户是否有权限访问。
- 权限继承和组合:可以通过建立一个权限关系表或者逻辑判断来处理。例如,
ADMIN
权限可以继承所有其他权限,某些复杂权限可能是多个简单权限的组合。
TypeScript 代码实现
class Permission {
// 定义不同的权限级别
static readonly ADMIN: string = 'admin';
static readonly USER: string = 'user';
static readonly GUEST: string = 'guest';
// 定义权限关系表,这里简单示例,实际可能更复杂
private static permissionRelations: { [key: string]: string[] } = {
[Permission.ADMIN]: [Permission.USER, Permission.GUEST],
[Permission.USER]: [Permission.GUEST]
};
// 静态方法用于验证用户权限
static canAccess(currentPermission: string, requiredPermission: string): boolean {
if (currentPermission === requiredPermission) {
return true;
}
if (this.permissionRelations[currentPermission]) {
return this.permissionRelations[currentPermission].includes(requiredPermission);
}
return false;
}
}
示例使用
// 示例调用
console.log(Permission.canAccess(Permission.ADMIN, Permission.USER)); // true
console.log(Permission.canAccess(Permission.USER, Permission.ADMIN)); // false
console.log(Permission.canAccess(Permission.GUEST, Permission.USER)); // false