当前位置:  开发笔记 > 编程语言 > 正文

如何在JSP/Servlet中获取用户角色

如何解决《如何在JSP/Servlet中获取用户角色》经验,为你挑选了2个好方法。

有没有办法获得一个String []与用户在JSP或Servlet中的角色?

我知道request.isUserInRole("role1"),但我也想知道用户的所有角色.

我搜索了servlet源代码,看起来这是不可能的,但这对我来说似乎很奇怪.

所以...任何想法?



1> Steve McLeod..:

答案很乱.

首先,您需要找出request.getUserPrincipal()在您的webapp中返回的类型.

    System.out.println("type = " + request.getUserPrincipal().getClass());

假设返回org.apache.catalina.realm.GenericPrincipal.

然后将getUserPrincipal()的结果转换为该类型并使用它提供的方法.

    final Principal userPrincipal = request.getUserPrincipal();
    GenericPrincipal genericPrincipal = (GenericPrincipal) userPrincipal;
    final String[] roles = genericPrincipal.getRoles();

我说它会变得凌乱.它也不是很便携.


它返回类org.jboss.security.SimplePrincipal并且该类没有getRoles()...这是非常愚蠢的......对不起,我应该提到:我正在使用JBoss 4.2.3GA AS

2> Josh..:

读入所有可能的角色,或硬编码列表.然后迭代它运行isUserInRole并构建用户所在的角色列表,然后将列表转换为数组.

String[] allRoles = {"1","2","3"};
HttpServletRequest request = ... (or from method argument)
List userRoles = new ArrayList(allRoles.length);
for(String role : allRoles) {
 if(request.isUserInRole(role)) { 
  userRoles.add(role);
 }
}

// I forgot the exact syntax for list.toArray so this is prob wrong here
return userRoles.toArray(String[].class);

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有