我基本了解
@DeclareRoles
和 @RolesAllowed
的功能,但不确定应该在哪里正确地添加@DeclareRoles
。我使用具有EJB会话bean和CDI的Vaadin应用程序进行测试,使用的是GlassFish 4,并且应用程序被打包为war而不是ear。
@DeclareRoles
不在任何类上:
显然什么都不起作用。HttpServletRequest.isUserInRole()
和SessionContext.isCallerInRole()
总是返回false。@RolesAllowed
始终拒绝访问。@DeclareRoles
在Servlet上:
@RolesAllowed
和HttpServletRequest.isUserInRole()
正如预期的那样工作。SessionContext.isCallerInRole()
总是返回false。@DeclareRoles
在会话bean上:
@RolesAllowed
、HttpServletRequest.isUserInRole()
和SessionContext.isCallerInRole()
正如预期的那样工作。即使在具有不同@DeclareRoles
的会话bean中调用SessionContext.isCallerInRole()
也是如此。
现在我的问题是:
- 放置
@DeclareRoles
的正确位置是哪里? - 只设置一次是否可以,还是应该注释使用
SessionContext.isCallerInRole()
或@RolesAllowed
的每个bean?