为什么<security-role>在application.xml和web.xml中重复?</security-role>

时间:2014-05-13 16:59:48

标签: java-ee

是否有必要在两个地方列出您的安全角色?

在每个地方是否意味着或实现了不同的东西?

2 个答案:

答案 0 :(得分:1)

安全角色应该在应用程序的部署描述符(web.xml)中定义,在运行时部署描述符中映射到应用程序服务器的主体(例如glassfish-web.xml

查看Working with Security RolesJava EE 6 tutorial部分或Netbeans tutorial部分。

答案 1 :(得分:0)

没有必要在两个地方列出角色。

application.xml中定义的安全角色适用于企业应用程序中的所有模块。对于每个模块,这些角色将与模块的部署描述符(Web应用程序模块的web.xml)中定义的安全角色相结合。所以基本上如果你有一个共享角色的多模块企业应用程序,你可以在一个地方声明它们。但请注意,如果通过@DeclareRoles和@RolesAllowed注释引用所有角色,则不必在部署描述符中声明任何角色名称,但您仍然可以为它们提供完整的描述。

来自Java EE平台规范(v7)的EE 8.4.1节: “应用程序的许多组件使用的角色名称的描述可以包含在应用程序级部署描述符中。”

从第8.5.2节开始: “在向部署者提交安全角色描述时......”接着说,如果他们都指定了相同的角色名,那么application.xml中的内容将覆盖各个模块。