检索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; }