0

我正在研究一个通过 JTest 扫描的项目,其中一个错误是 SECURITY.WSC.CACM-1,它指出:

不允许在“isInRole()”中调用“isUserInRole()”,只能在集中访问控制方法声明中调用

我已将代码编写为:

private HttpServletRequest getRequest() {
            assert (request != null);
            return request;
        }
       @Override
public void onRequestStart(HttpServletRequest request, HttpServletResponse response) {
            this.request = request;
        }
public boolean isAdmin() {
        return isInRole("ADMIN");
        }
private boolean isInRole(String role) {
             return getRequest().isUserInRole(role);
        }

我哪里错了。谁能给我解决方案?

PS:- 如果您有可能修复 JTest 扫描缺陷,请提供我的链接

4

1 回答 1

0

这条规则说你不应该从未指定的方法调用访问控制方法。您的应用程序应该具有授权类/模块。所以你的代码:

private boolean isInRole(String role) {
    return getRequest().isUserInRole(role);
}

不正确(检查用户角色),因为此方法位于 Servlet 中。请将此方法移至您的授权类并在您的测试配置中设置此方法。

于 2018-11-22T13:55:39.057 回答