首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Servlet中获取用户角色?

如何在Servlet中获取用户角色?
EN

Stack Overflow用户
提问于 2009-05-07 12:31:54
回答 3查看 8.3K关注 0票数 2

我使用Jbos AS 5和DatabaseServerLoginModule进行授权。我将我的应用程序策略定义为(例如,仅限于示例,而不是实际代码):

代码语言:javascript
复制
<application-policy name = "jbossmq">
  <authentication>
    <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
       flag = "required">
       <module-option name = "unauthenticatedIdentity">guest</module-option>
       <module-option name = "dsJndiName">java:/MyDatabaseDS</module-option>
       <module-option name = "principalsQuery">SELECT PASSWD FROM JMS_USERS WHERE USERID=?</module-option>
       <module-option name = "rolesQuery">SELECT ROLEID, 'Roles' FROM JMS_ROLES WHERE USERID=?</module-option>
    </login-module>
  </authentication>
</application-policy>

成功授权用户后,如何从servlet中检索用户角色?在上面的代码片段中,角色是从数据库中选择的,但是它们存储在哪里呢?在会话中!?如果是,在哪个会话变量下?

另外,是否可以在JBoss中同时使用Ldap身份验证和数据库授权?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-07 13:12:13

克林顿基本上是对的,

代码语言:javascript
复制
boolean HttpServletRequest.isUserInRole(String role)

方法可以用来检查用户是否分配了特定的角色。但是对于,此方法用于检查由应用程序定义的J2EE角色(在EAR的描述符中,application.xml)。

在部署期间,或者通过在EAR文件中打包特定于AS的描述符,您需要指定应用程序服务器的用户角色(您在登录模块中设置的用户角色)到J2EE应用程序的映射。角色。

票数 5
EN

Stack Overflow用户

发布于 2009-05-07 13:03:41

我知道这种方法:

代码语言:javascript
复制
boolean HttpServletRequest.isUserInRole(String role)

我知道这不会给你一个所有角色的列表,但它能满足你的目的吗?

票数 2
EN

Stack Overflow用户

发布于 2014-04-14 22:15:42

如果容器是JACC兼容的,下面的代码片段可能会工作(至少对于我在Glassfish 3.1.x上是这样)

代码语言:javascript
复制
Subject subject = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
for (Principal principal : subject.getPrincipals()) {
    LOG.debug("In subject: " + principal.getName());
}

第一个目标(通常)是你的用户主体,其他的往往是组主体。请注意,如果您碰巧知道组主体的类名,您可以通过调用getPrincipals(Class<T> c)来过滤它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/834388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档