实现一个接口包含@PreAuthorize到控制器会导致错误,为什么?

时间:2016-01-25 14:00:51

标签: java spring spring-mvc spring-security spring-boot

我有ControllerInterface,当我尝试实施应用Preauthorize注释的界面时,它会对控制器造成损害,因此methods在那种情况下没有工作。我知道我可以直接在controller内部应用注释,但如果我可以使用Spring的示例中的界面来应用它,我会很高兴

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
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";
    }
}

0 个答案:

没有答案