Nicolas,

Are you sure you want another AccessDecisionVoter?

This sounds more like you want instance-based security, available through
the spring-security-acl package.  I can't help you much on code, because
what I have is using 2.0, with deprecated interfaces and classes, from my
evolution from Acegi.  Specifically, my work involved custom implementations
of  AclProvider.  I do have an AclAuthorize component that I use in my
personal copy of tapestry-spring-security that could easily be adapted if
you wanted that.

Regards,

Jonathan




On Mon, May 10, 2010 at 8:28 AM, Nicolas Gillet - MARKET-IP <
nicolas.gil...@market-ip.com> wrote:

> Hello,
>
>
>
> I’m using Tapestry Spring Security 2.1.0 and I try to add a custom voter to
> allow an user to edit only himself.
>
> So on my UserManager I will add an @Secured(“HIMSELF”) on the save(User
> user) method.
>
> I found a  code working with acegi security doing this, the problem is when
> I add a new Voter, it isn’t taken in account …
>
>
>
> Here’s what I added to my SecurityModule :
>
>
>
>    public final void contributeAccessDecisionManager(
>
>            final OrderedConfiguration<AccessDecisionVoter> configuration) {
>
>        configuration.add("HimselfVoter", new
> HimselfVoter(Authorities.HIMSELF));
>
>    }
>
>
>
> When debugging, I see that my voter is properly added and when the
>
>
>
> buildAccessDecisionManager(final List<AccessDecisionVoter> voters) { … }
>
>
>
> method is called I can see that the “voters” param contains my HimselfVoter
> instance.
>
> But when trying to call my secured method, the HimselVoter isn’t in the
> list
> anymore (and then not called).
>
>
>
> Still when debugging the method “decide” of AffirmativeBased class I see
> that the list of voter it is iterating on contains 2 voters :
>
> - a standard RoleVoter
>
> - an AuthenticatedVoter
>
>
>
> Normally there shouldn’t be this AuthenticatedVoter but a HimselfVoter.
>
>
>
> One last thing I noticed is that it looks like I have 2 instances of
> AffirmativeBased because the debugger run twice in its initialization. Once
> with the RoleVoter and AuthenticatedVoter as parameters (on server statup)
> and once with a RoleVoter and an HimselfVoter (on the first call to my
> secured method). Despit it seems that the wrong access decision manager is
> intercepting the method call …
>
>
>
> So do I have to do to add one simple voter to my access decision manager ?
> What am I missing ?
>
>
>
> Thanks for any input.
>
>
>
> Nicolas.
>
>
>
>
>
>
>
>
>
>  <http://www.market-ip.com/> www.market-ip.com
>
>
>
>
>
> Nicolas Gillet
>
> Market-IP
> Chaussée de Marche, 774
> BELGIUM - 5100 Naninne
>
>
>  <mailto:nicolas.gil...@market-ip.com> nicolas.gil...@market-ip.com
>
>
>
>  tel:
> fax:
>
> +32 81 33 11 11
> +32 81 33 11 10
>
>
>
>
>
>
>
>


-- 
Jonathan Barker
ITStrategic

Reply via email to