我有一个问题。我不完全理解,使用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
时,我得到了相同的结果。传播用户名,但不传播角色列表。我正在阅读手册,但我现在还没有,我正在寻找的东西。
感谢任何提示。