我对Spring机制有疑问。这是场景:
我有一个抽象的Controller类,它有一些由@Resource
Annotation注入的依赖项。子类包含用于处理请求的@RequestMapping
注释。到目前为止,一切工作正常,所有依赖都被注入。
现在我正在尝试将Spring Security引入我们的项目,但是当我尝试使用@PreAuthorize
时,我在某些NullPointerException
方法中得到@ModelAttribute
,因为依赖注入现在失败了。我发现,Spring是我的Controller的代理类,但不知何故不会注入所有依赖项。
也许我错过了一个配置来告诉Spring代理必须使用目标的依赖关系,或者它应该将所有依赖关系注入代理本身。
如果有人有想法,我会很高兴听到它。
答案 0 :(得分:0)
如果您想使用预授权注释,那么最好的部分是在服务层中使用它们而不是在控制器中。 这也记录在这里http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/faq.html#faq-method-security-in-web-context “通常我们建议在服务层而不是在单个Web控制器上应用方法安全性”
如果你想保护网址(即在控制器中定义的请求图片),最好的方法是使用此网址中描述的拦截网址模式 http://docs.spring.io/spring-security/site/docs/4.0.x/reference/html/core-web-filters.html#filter-security-interceptor
如果您仍想在控制器中使用预授权 您可以按照这些说明(此处已存在Securing controller method with @RolesAllowed and @PreAuthorize)
进行操作要使用PreAuthorize和JSR-250注释,您必须
希望这有帮助