public boolean isValidT flowIn ConstraintValidatorContext ctx if !propgetEnabled LOGGERinfopolicy check is disabled skip checking; return true; ServletReq
这个方法是一个权限检查的方法。它接收一个泛型参数flowIn和一个ConstraintValidatorContext参数ctx,并返回一个boolean值。
方法的作用是判断是否满足权限检查的条件。具体的实现逻辑如下:
-
首先判断prop对象的enabled属性是否为false,如果是则跳过权限检查,直接返回true。
-
获取当前请求的ServletRequestAttributes对象,并进行断言判断是否为空。
-
调用permissionService的permissionCheck方法,检查当前请求的请求URI是否有权限。
-
获取当前用户的登录名。
-
调用permissionMapper的getPermissionsOfUser方法,根据登录名、应用名和权限类型获取用户拥有的权限列表。
-
遍历权限列表,将每个权限的document字段转换为Statement对象,并添加到stmtList列表中。
-
根据资源和操作筛选出符合条件的权限,并将其分为允许和拒绝的权限列表。
-
如果存在拒绝的权限,判断是否存在资源类型为Collection的权限,如果存在则调用doDenyCollection方法处理,否则调用doDenyInstance方法处理。
-
如果存在允许的权限,判断是否存在资源类型为Collection的权限,如果存在则调用doAllowCollection方法处理,否则调用doAllowInstance方法处理。
-
如果不存在任何权限,则调用fallback方法处理。
-
获取当前用户在当前应用中的权限偏好值。
-
如果权限偏好值为"Allow",则直接返回true,否则调用buildErrorMsg方法构建错误信息。
-
如果检查过程中发生异常,记录错误日志。
-
如果prop对象的resolveFailed属性为"Allow",则直接返回true,否则调用buildErrorMsg方法构建错误信息。
总的来说,这个方法主要是根据用户的权限列表和权限偏好值进行权限检查,并根据检查结果返回相应的布尔值
原文地址: https://www.cveoy.top/t/topic/hCLw 著作权归作者所有。请勿转载和采集!