Alf*_*TeK 11 java authentication jboss jsp servlets
有没有办法获得一个String []与用户在JSP或Servlet中的角色?
我知道request.isUserInRole("role1"),但我也想知道用户的所有角色.
我搜索了servlet源代码,看起来这是不可能的,但这对我来说似乎很奇怪.
所以...任何想法?
Ste*_*eod 12
答案很乱.
首先,您需要找出request.getUserPrincipal()在您的webapp中返回的类型.
System.out.println("type = " + request.getUserPrincipal().getClass());
Run Code Online (Sandbox Code Playgroud)
假设返回org.apache.catalina.realm.GenericPrincipal.
然后将getUserPrincipal()的结果转换为该类型并使用它提供的方法.
final Principal userPrincipal = request.getUserPrincipal();
GenericPrincipal genericPrincipal = (GenericPrincipal) userPrincipal;
final String[] roles = genericPrincipal.getRoles();
Run Code Online (Sandbox Code Playgroud)
我说它会变得凌乱.它也不是很便携.
读入所有可能的角色,或硬编码列表.然后迭代它运行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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
54187 次 |
最近记录: |