我正在开发一个经过JTest扫描的项目,其中一个错误是SECURITY.WSC.CACM-1,其中声明:
'的isUserInRole()'不允许在' isInRole()'中调用, 它应该只在集中访问控制方法中调用 声明
我编写了代码:
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扫描缺陷的可能修复,请提供链接
答案 0 :(得分:0)
此规则表明,您不应从未指定的方法中调用访问控制方法。您的应用程序应具有授权类/模块。所以你的代码:
private boolean isInRole(String role) {
return getRequest().isUserInRole(role);
}
不正确(用于检查用户角色),因为此方法位于Servlet中。请将此方法移到您的授权类,并在测试配置中设置此方法。