0

我正在尝试测试具有弹簧安全性的 webflow 控制器:

<action-state id="search">
    <secured attributes="ROLE_ADMIN"/>
...
</action-state>

我正在使用AbstractXmlFlowExecutionTests子类。

现在,测试在没有“安全”标签的情况下运行正常(我没有为安全性做任何模拟),但是一旦我添加了安全性标签,测试就会继续成功完成,尽管我预计会抛出一个安全异常。任何想法为什么它不起作用以及我应该如何配置它?提前致谢!伊戈尔

4

1 回答 1

1

好的,我找到了解决方案:我需要手动添加一个 securityListener。之前startFlow

setFlowExecutionListener(getSecurityListener(new String[] {"ROLE_ADMIN_FAKE"}));

在哪里

private FlowExecutionListener getSecurityListener(String[] roles) {
    List<GrantedAuthority> result = new ArrayList<>();
    for (String role: roles) {
        SimpleGrantedAuthority authority = new SimpleGrantedAuthority(role);
        result.add(authority);
    }
    Authentication auth = new PreAuthenticatedAuthenticationToken("Igor", "", result);
    SecurityContextHolder.getContext().setAuthentication(auth);
    return new SecurityFlowExecutionListener();
}
于 2013-03-08T20:21:02.087 回答