I have this Controller
and an Interface
, when i try to implement the interface for applying Preauthorize
annotation , it cause a damage to the controller , so the methods
aren't working at that case . I know that i can apply the annotation directly inside the controller
but i'll be happy if i can apply it using the interface as read in Spring's example
public interface PermissionsSecurity {
@PreAuthorize("hasRole('ROLE_ADMIN')")
String deletePost(@RequestParam(value = "id", required = true) Long id);
@PreAuthorize("hasRole('ROLE_ADMIN')")
String permissions(ModelMap model, @RequestParam(value = "q", required = false) String q);
}
Controller :
@Controller
public class PermissionsController implements PermissionsSecurity{
@Autowired
@Qualifier("permissionValidator")
private Validator validator;
@Autowired
private Permissions permissionsService;
@InitBinder
private void initBinber(WebDataBinder binder){
binder.setValidator(validator);
}
@RequestMapping(value="/permissions:delete", method=RequestMethod.POST)
public String deletePost(@RequestParam(value = "id", required = true) Long id) {
permissionsService.delete(id);
return "redirect:/permissions";
}
@RequestMapping(value = "/permissions", method=RequestMethod.GET)
public String permissions(ModelMap model, @RequestParam(value = "q", required = false) String q){
model.addAttribute("q", (q != null)? q : "");
model.addAttribute("viewTemplate", "permissions");
model.addAttribute("roles", permissionsService.getAll());
return "welcome";
}
}