繁体   English   中英

Spring安全性和Struts 2

[英]Spring security and Struts 2

我有一个带有@Secured({"ROLE_ADMIN"})的struts2动作来保护执行方法。 在execute方法中,我将一个消息分配给action的成员变量,然后返回SUCCESS并最终在jsp页面上。 在页面上,我使用<sproperty>检索actions成员变量。

private String greeting;

public String execute() throws Exception {
    this.greeting="Hello";
    return SUCCESS;
}

// getters and setters for greeting
...

<s:property value="greeting" />

问题是当存在安全注释时,jsp对成员变量没有显示任何内容,但是当删除@Secured时,整个事情表现正常并显示设置在成员变量中的消息。

看起来实际的安全性工作正常但是当通过注释启用时,成员变量(或者动作的实例)不会进入值堆栈。

我看不到任何错误消息。

您必须确保在执行<s:property value="greeting" /> ,您在SecurityContextHolder.getContext()中将“ROLE_ADMIN”作为授予的权限存在。

此外,如果使用存储安全上下文的默认“线程本地”策略,请确保授予的权限正确存储在每个请求线程中。 例如,如果在http会话中存储有关用户凭据的信息,则需要设置HttpSessionContextIntegrationFilter

作为最后的手段,如果你有可能,你可以在你正在使用的Spring Security Interceptor中逐步调试会话并查看问题所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM