2015-04-30 12 views
5

Vorrei aggiungere alcune logiche di business al processo di autorizzazione dell'applicazione Spring e penso che implementare un AccessDecisionVoter personalizzato sia la soluzione migliore.Come aggiungere gli elettori a AccessDecisionManager predefinito?

Sarebbe bello, ma non ho trovato alcun modo per aggiungere questo nuovo votante al processo di autorizzazione senza ridefinire completamente il bean AccessDecisionManager. Questo è molto sconveniente perché la mia logica di business dovrebbe essere aggiunta in modo trasparente e non richiede alcun responsabile decisionale specifico. Invece, dovrebbe solo indicare la sua opinione (voto) e lasciare che l'applicazione allegata applichi la propria politica di autorizzazione.

Anche l'esempio suggerito dalla sicurezza della molla (https://spring.io/blog/2009/01/03/spring-security-customization-part-2-adjusting-secured-session-in-real-time) utilizza questo approccio.

Ho trovato anche una soluzione promettente a http://forum.spring.io/forum/spring-projects/security/109476-how-to-add-voters-to-the-default-accessdecisionmanager?p=570570#post570570, che potrebbe aggiungere ulteriori votanti a qualsiasi AbstractAccessDecisionManager utilizzando un post processore di bean, ma il metodo setDecisionVoters (chiave per tale soluzione) è deprecato e quindi è fuori questione.

Quindi, mi chiedevo se c'è un modo per aggiungere il mio elettore all'attuale AccessDecisionManager senza doversi occupare di esso. qualche idea?

risposta

-1

AfirmativeBean Estende AbstractAccessDecisionManager. Basta usare getDecisionVoters() e aggiungerne uno alla lista

AfirmativeBean afirmativeBean = (AfirmativeBean)bean); 
afirmativeBean.getDecisionVoters().add(yourvoter); 
Problemi correlati