Было бы хорошо узнать больше о ваших требованиях и вашей конфигурации, но я бы сказал, что AccessDecisionVoter должен получить все необходимое для принятия решений в качестве своих параметров:
- Объект аутентификации должен содержатьGrantedAuthorities
- Защищаемый объект должен быть вашей статьей
- Атрибуты Config в значительной степени должны быть любой дополнительной информацией, используемой для принятия решения
В вашем случае (опять же, незная много о дизайне вашей системы), я бы либо пошел за создание чего-то вроде
public class SpecificArticlesGrantedAuthority implements GrantedAuthority {
private final Collection<Integer> grantedArticleIds;
//Constructor
//Getter for the IDs
}
и удержал бы это в вашем объекте аутентификации.
В качестве альтернативы используйте PermissionEvaluator, а не AccessDecisionVoter, которая лучше подходит для ACL-подобной функциональности (но доступна только с Spring 3.0)