I am writing a REST filter for one my rest api class. I want to do authorization in the rest filter and annotate all the REST services I need to apply authorization check on. Here's the Rest Resource Filter code:
@Scanned
@Component
public class AuthorizationFilter implements ResourceFilter {
private MyActibeObjectDao myActibeObjectDao;
@Inject
public AuthorizationFilter(MyActibeObjectDao myActibeObjectDao) {
this.myActibeObjectDao = myActibeObjectDao;
}
@Override
public ContainerRequestFilter getRequestFilter() {
return new ContainerRequestFilter() {
@Override
public ContainerRequest filter(ContainerRequest request) {
...
/* Fetch admin users from AO */
String[] admins = myActibeObjectDao.getAdminUsers();
/* If not in the admins then throw Exception */
throw new WebApplicationException(
Response.status(Response.Status.FORBIDDEN)
.entity("You are not authorized to this operation!")
.build());
}
};
}
...
}
Here's my REST class:
@GET
@AnonymousAllowed
@Produces(MediaType.APPLICATION_JSON)
@Path("/settings/{userId}")
@ResourceFilters(AuthorizationFilter.class)
public Response retrieveTableMetaData(@PathParam("userId") Integer userId) {
/* To Do: */
}
The problem is, I am getting null value in
myActibeObjectDao
Any pointer will be of great help in this regards.
Thank you!
Vikash