首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@预授权不能正常工作

@预授权不能正常工作
EN

Stack Overflow用户
提问于 2012-12-29 10:44:55
回答 3查看 4.4K关注 0票数 1

我的控制器:

代码语言:javascript
复制
@RequestMapping("/createchar")
@PreAuthorize("hasRole('ROLE_USER')")
public String createCharacter(Map<String, Object> map, Principal principal) {

spring-security.xml

代码语言:javascript
复制
<global-method-security pre-post-annotations="enabled"
    proxy-target-class="true" />
...
<intercept-url pattern="/game*" access="ROLE_USER" />
    <form-login login-page="/account/login" ...

即使在重新部署应用程序之后,页面也始终被加载。我还没登录呢。为什么不将其重定向到登录页面?

如果您需要更多的信息,请随时询问。

EN

回答 3

Stack Overflow用户

发布于 2012-12-29 11:07:09

控制器bean通常驻留在servlet上下文中,因此它们既不受AOP声明的影响,也不受根应用程序上下文中的bean post处理器的影响。

Spring中applicationContext.xml和Springservlet.xml的区别

我认为代理控制器类不是一个好主意,请参阅使用@Controller在控制器上实现接口的Spring问题 -因此我更愿意避免在控制器类上使用AOP以避免意外,并且只在服务/DAO bean(即根应用程序上下文中的bean)上使用它。

在这种情况下,您应该使用拦截-url方法的网页。

票数 2
EN

Stack Overflow用户

发布于 2013-08-02 16:11:32

在实习期间,我也面临着同样的问题。我和我的队友花了两天的时间来编写Spring安全源代码。然而,今天我们被告知,甚至看不到任何例外的原因是前面提到的“操作程序机制”。原因是必须创建代理类。

弹簧代理机制,所以我们在特定情况下所需要做的就是添加

<aop:config proxy-target-class="true" />

到app-servlet.xml

如果您尝试调试代码并查找Spring调用的方法,您甚至可以解决类似的问题(因为真正的原因可能不同),但这对您的耐心来说是一个巨大的挑战。

希望这会对你和其他人有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2014-05-01 22:45:22

我也面临着同样的问题。当我将下面的元素从applicationContext.xml移到*-servlet.xml (我的dispatcher的配置xml)时,我的问题就解决了。

代码语言:javascript
复制
<security:global-method-security secured-annotations="enabled"/>

您必须将此元素包含在dispatcher的xml中,而不是应用程序的xml中。

弹簧常见问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14080893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档