我的 Controller :
@RequestMapping("/createchar")
@PreAuthorize("hasRole('ROLE_USER')")
public String createCharacter(Map<String, Object> map, Principal principal) {
spring-security.xml
<global-method-security pre-post-annotations="enabled"
proxy-target-class="true" />
...
<intercept-url pattern="/game*" access="ROLE_USER" />
<form-login login-page="/account/login" ...
页面始终加载,即使在重新部署应用程序之后也是如此。我什至还没有登录。为什么它不将其重定向到登录页面?
如果您需要更多信息,请随时询问。
最佳答案
Controller bean 通常驻留在 servlet 上下文中,因此它们既不受 AOP 声明的影响,也不受根应用程序上下文中的 bean 后处理器的影响。
Difference between applicationContext.xml and spring-servlet.xml in Spring Framework
我认为代理 Controller 类不是一个好主意,请参阅 Spring-MVC Problem using @Controller on controller implementing an interface - 所以我更愿意避免在 Controller 类上使用 AOP 以避免意外 - 并且只在服务/DAO beans 上使用它,即根应用程序上下文中的 beans。
在这种情况下,您应该对网页使用拦截 url 方法。
关于java - @PreAuthorize 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14080893/