我只是一个Spring Security的初学者,但我想知道的是有可能的方式,我可以使用配置keycloak @PreAuthorize
,@PostAuthorize
,@Secured
和其他注释.例如,我keycloak-spring-security-adapter
在我的简单Spring Rest webapp中配置了Spring Security,以便我可以访问控制器中的Principal对象,如下所示:
@RestController public class TMSRestController { @RequestMapping("/greeting") public Greeting greeting(Principal principal, @RequestParam(value="name") String name) { return new Greeting(String.format(template, name)); } ... }
但是当我尝试这个时(只是一个例子,实际上我想在授权之前执行自定义EL表达式):
@RestController public class TMSRestController { @RequestMapping("/greeting") @PreAuthorize("hasRole('ADMIN')") public Greeting greeting(Principal principal, @RequestParam(value="name") String name) { return new Greeting(String.format(template, name)); } ... }
我得到例外:
org.springframework.security.authentication.AuthenticationCredentialsNotFoundException:在SecurityContext中找不到Authentication对象
在我的spring安全配置中,我启用了全局方法安全性:
我需要做什么才能使这个弹簧安全注释工作?是否可以在此上下文中使用此注释?