整体设计思路
- 定义特性:创建自定义特性类,如
AdminOnlyAttribute
,用于标记需要特定权限的方法。
- 权限验证逻辑:利用反射获取方法上标记的特性,根据特性判断当前用户是否具有相应权限。
- 扩展性:设计为可插拔式,方便添加新的权限特性和验证逻辑。
- 可维护性:将核心逻辑封装在独立的类中,便于修改和管理。
关键类和方法的设计
- 特性类:
<AttributeUsage(AttributeTargets.Method)>
Public Class AdminOnlyAttribute
Inherits Attribute
End Class
- 权限验证类:
Public Class PermissionValidator
Public Shared Function HasPermission(method As MethodInfo, userRole As String) As Boolean
Dim attributes = method.GetCustomAttributes(True)
For Each attr In attributes
If TypeOf attr Is AdminOnlyAttribute AndAlso userRole <> "Admin" Then
Return False
End If
Next
Return True
End Function
End Class
在实际项目中的应用
- 标记方法:在需要权限控制的方法上标记特性,如:
Public Class SomeBusinessLogic
<AdminOnly>
Public Sub AdminOnlyMethod()
'方法逻辑
End Sub
End Class
- 调用验证:在调用方法前进行权限验证:
Dim methodInfo = GetType(SomeBusinessLogic).GetMethod("AdminOnlyMethod")
Dim hasPermission = PermissionValidator.HasPermission(methodInfo, currentUserRole)
If hasPermission Then
Dim instance = New SomeBusinessLogic()
instance.AdminOnlyMethod()
Else
'提示用户无权限
End If