我有一个EJB3应用程序作为服务层,一个Tapestry5Web应用程序作为它的客户端。EJB应该提供一个供web应用程序使用的会话外观。
要执行EJB层中定义的操作,用户需要通过web界面登录。我必须具有实体级别的安全性,所以Java EE声明式安全性在这里对我用处不大。
我应该如何在这种设置中实现安全性?我宁愿在EJB层实现它,而不是在web应用程序中实现它,以防我切换客户端。
我可以使用web应用程序中的http会话来存储用户会话,然后在每个无状态EJB调用中传递user对象。
public void doStuff(params, User user);有状态会话bean是这里的解决方案吗?
编辑:实体级安全性指的是行级安全性。
发布于 2012-05-30 21:26:38
你所说的实体级安全性到底是什么意思?
如果我没理解错的话,你是用登录用户直接从你的user应用程序调用你的SLSB的吗?
如果是这样的话:编写一个Inteceptor,它将SessionContext作为一个资源注入,并用这个拦截器注释你的SLSB...在拦截器的@AroundInvoke中,你可以从SessionContext获取主体,然后你可以做任何你想做的事情(例如,查询用户的数据库,如果有问题,直接从拦截器抛出一个异常,而不是让它进入你的SLSB)。
https://stackoverflow.com/questions/10815504
复制相似问题