检索Java EE 5中已定义角色的列表
时间:2020-03-06 15:04:12 来源:igfitidea点击:
我想知道是否有可能在Java代码中检索web.xml文件中定义的安全角色的完整列表?如果是这样,该怎么做?
我知道'isUserInRole'方法,但我也想处理在web.xml文件中请求角色但未定义(或者定义不同)的角色。
解决方案
据我所知,没有办法在Servlet API中执行此操作。但是,我们可以直接解析web.xml并自己提取值。我在下面使用了dom4j,但是我们可以使用任何喜欢的XML处理工具:
protected List<String> getSecurityRoles() {
List<String> roles = new ArrayList<String>();
ServletContext sc = this.getServletContext();
InputStream is = sc.getResourceAsStream("/WEB-INF/web.xml");
try {
SAXReader reader = new SAXReader();
Document doc = reader.read(is);
Element webApp = doc.getRootElement();
// Type safety warning: dom4j doesn't use generics
List<Element> roleElements = webApp.elements("security-role");
for (Element roleEl : roleElements) {
roles.add(roleEl.element("role-name").getText());
}
} catch (DocumentException e) {
e.printStackTrace();
}
return roles;
}

