如何以编程方式在 OpenEJB 中指定我的用户/角色?
在我正在从事的项目中,我们使用 OpenEJB 作为框架来测试我们的 EJB。我们以编程方式构造一个InitialContext
,并使用它来获取事务管理器和各种EJB。
但是,我现在必须测试的 EJB 具有 @RolesAllowed
注释,因此 OpenEJB 拒绝获取该 EJB,认为我没有所需的权限。
我如何向 OpenEJB 指定此测试要模拟的用户以及与他关联的角色?
In the project I'm working on, we are using OpenEJB as a framework to test our EJB. We construct an InitialContext
programatically, and use it to get the transaction manager and the various EJB.
However, the EJB I have to test now has the @RolesAllowed
annotation, and so OpenEJB refuses to get that EJB, arguing I don't have the permissions required.
How can I specify to OpenEJB the user this test is supposed to simulate, and the role associated with him?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
bkail 提到的 @RunAs 建议绝对是一个好方法。第二种不涉及内部类的方法是登录测试用例。
登录方法
当您引导 OpenEJB 时,请在
InitialContext
属性中指定用户/密码,如下所示:然后也许以不同的用户身份再次测试:
测试用户和组
您可以通过添加 <测试用例的类路径中的 code>users.properties 和
groups.properties
文件。在 Maven 中,它位于以下位置:users.properties
文件可能如下所示和
groups .properties
像这样The
@RunAs
suggestion bkail mentions is definitely a good way to go. The second approach that doesn't involve inner classes is to login in the testcase.Login approach
When you bootstrap OpenEJB, specify the user/pass in the
InitialContext
properties as follows:Then perhaps test again as a different user:
Test users and groups
You can configure test users and groups by putting a
users.properties
andgroups.properties
file in the classpath of the testcase. In maven that'd be at the following locations:The
users.properties
file might look like thisAnd
groups.properties
like so请参阅 OpenEJB 测试安全示例。基本上,您间接通过一个没有@RolesAllowed 的测试bean,但在调用第二个bean 之前使用@RunAs 来切换角色。
See the OpenEJB Testing Security Example. Basically, you indirect through a test bean that has no @RolesAllowed, but uses @RunAs to switch roles before calling the second bean.