这段代码通过以下几个方面体现了最小权限原则:
-
函数权限分离:
check_balance
函数仅负责查询账户余额,不涉及任何修改操作。这意味着这个函数具有执行任务所需的最小权限,即只读权限,它不具备修改账户状态的能力。
-
角色区分与权限分配:
- 使用了
UserType
枚举类型来区分用户角色,分为普通用户(USER)和管理员(ADMIN)。 - 在转账函数
transfer_money
中,首先检查调用该函数的用户是否具有管理员权限。如果不是管理员,函数就会拒绝执行转账操作并输出提示信息,防止了普通用户执行只有管理员才应具有的转账功能。
- 使用了
-
按需赋权:
- 通过用户类型的比较,程序实现了根据用户的角色动态赋予或拒绝特定操作的权限。在这个例子中,只有管理员用户才能调用
transfer_money
函数执行转账操作,体现了“给予主体执行其任务所需的最小特权”。
- 通过用户类型的比较,程序实现了根据用户的角色动态赋予或拒绝特定操作的权限。在这个例子中,只有管理员用户才能调用