Performance: Custom permission evaluator
MEDIUM IMPACT
This affects the speed of authorization checks during user interactions, impacting input responsiveness and overall user experience.
public boolean hasPermission(Authentication auth, Object targetDomainObject, Object permission) {
// Use cached permissions stored in Authentication object
Set<String> permissions = auth.getAuthorities().stream()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.toSet());
return permissions.contains(permission);
}public boolean hasPermission(Authentication auth, Object targetDomainObject, Object permission) {
// Heavy database call on every permission check
User user = userRepository.findByUsername(auth.getName());
return user.getPermissions().contains(permission);
}| Pattern | DB Calls | Permission Checks | Latency Impact | Verdict |
|---|---|---|---|---|
| Direct DB call per check | Multiple per request | High | 50-100ms delay per check | [X] Bad |
| Cached permissions in Authentication | None after login | Low | Under 1ms per check | [OK] Good |