On Nov 4, 2009, at 3:31 PM, Casper Bang wrote:
> I do it the same way, implementing my own Principal such as to be able
> to add custom context (i.e. allow multiple credentials). If I remember
> correctly, this was the recommended aproach by Paul - but it would be
> interesting if you could somehow inject @User, to match the rest of
> Jersey's way of doing things. :)
>
You can develop your own injectable provider to inject the User if you
like.
@Provider
public class UserInjector implements InjectableProvider<Context, Type> {
private final SecurityContext securityContext;
public UserInjector(@Context SecurityContext securityContext) {
this.securityContext = securityContext;
}
public ComponentScope getScope() {
return ComponentScope.PerRequest;
}
public Injectable getInjectable(ComponentContext ic, Context a,
Type c) {
if (c == User.class) {
return new Injectable<User>() {
return
((InternalPrincipal)securityContext.getUserPrincipal()).getUser();
};
}
return null;
}
}
Paul.
> /Casper
>
>
> Zoltan Arnold NAGY wrote:
>> Hi,
>>
>> I'm wondering if there's a better way.. I'm currently doing it like
>> this:
>> @Path("/d")
>> public class DatasResource {
>> @Context
>> private SecurityContext securityContext;
>>
>> @PUT
>> @Consumes(MediaType.APPLICATION_JSON)
>> public Response addData(Sample s) {
>> User user =
>> ((InternalPrincipal)securityContext.getUserPrincipal()).getUser();
>> ..
>> }
>>
>> my own filter sets the appropriate principal (and securitycontext),
>> and it's
>> always set.
>>
>> Thanks,
>> Zoltan
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>