java - @PreAuthorize 无法正常工作

标签 java spring spring-mvc spring-security pre-authentication

我的 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/

相关文章:

java - 使用 Spring @Controller 构造型保持方法可见性的最佳实践

java - Spring Security 和 Spring Batch 管理控制台 - 自定义登录页面

java.lang.NoSuchMethodError : org. apache.poi.util.POILogger.log(I[Ljava/lang/Object;)V

java - 注册为音乐播放器并播放歌曲

java - Spring MVC错误

spring - 如何在 Spring MVC 应用程序中显示上传的图像

java - 如何使用 xml 配置构建以下 bean?

javascript - jspring 4.0x json响应错误,根据请求 "accept" header ,特征 Not Acceptable

java - HeapSort 算法索引从 1 到 n,实际代码必须从 0 到 n-1

java - 使用 DropWizard 计时器查找代码块的执行时间