用户角色从Spring Security Web层传播到EJB层

时间:2011-10-24 09:27:07

标签: spring glassfish ejb

我有一个问题。我不完全理解,使用Spring Security到EJB的Web层的用户角色列表是怎样的。这是我的研究。

我在Spring应用程序上下文中写下了这个:

<security:authentication-manager>
    <security:authentication-provider>
        <security:user-service>
            <security:user name="jimi" password="test" authorities="ROLE_USER, ROLE_ADMIN" />
            <security:user name="bob" password="test" authorities="ROLE_USER" />
        </security:user-service>
    </security:authentication-provider>
</security:authentication-manager>

登录后我打开页面,在那里我有两个用户角色测试。一个位于Web层

<p>User is in role <code>ROLE_ADMIN</code>: <code>#{request.isUserInRole('ROLE_ADMIN')}</code></p>

和EJB层中的第二个:

@Resource
SessionContext ctx;

@Override
public String getString() {
    return "Authorized user: " + ctx.getCallerPrincipal() + ", admin=" + ctx.isCallerInRole("ROLE_ADMIN");
}

但结果不一致:

Authorized user: jimi, admin=false
User is in role ROLE_ADMIN: true

我认为我需要将用户jimi添加到其中一个领域。但是现在,当我在文件领域中创建了具有角色jimi的用户ROLE_ADIM时,我得到了相同的结果。传播用户名,但不传播角色列表。我正在阅读手册,但我现在还没有,我正在寻找的东西。

感谢任何提示。

0 个答案:

没有答案