我正在使用JBoss为基于Flex的RIA提供一堆RESTful服务。无论如何,我通过一些痛苦来实现登录(使用基于表单的登录),但我很努力地提供一种RESTful方法来登录用户。 在JSP中我可以简单地调用类似:通过RESTful调用(无效会话)注销用户
session.invalidate()
我怎样才能做到这一点与JBoss,RestEasy的使用无状态会话bean实现RESTful服务?
我正在使用JBoss为基于Flex的RIA提供一堆RESTful服务。无论如何,我通过一些痛苦来实现登录(使用基于表单的登录),但我很努力地提供一种RESTful方法来登录用户。 在JSP中我可以简单地调用类似:通过RESTful调用(无效会话)注销用户
session.invalidate()
我怎样才能做到这一点与JBoss,RestEasy的使用无状态会话bean实现RESTful服务?
后有点googeling的我创建了一个解决方案:
这是我的RESTful服务bean的本地接口:
@Local
@Path("/Rest")
public interface SessionController {
...
@GET
@Path("/logout/")
@Produces("text/xml")
String logout(@Context HttpServletRequest req);
}
而这正是实现:
@RolesAllowed({ "TheBoss", "SomeUser", ... })
@SecurityDomain("mysqlLogin")
@Stateless
public class SessionControllerBean implements SessionController {
...
public String logout(@Context HttpServletRequest req) {
...
req.getSession().invalidate();
return "SUCCESS";
}
}
漂亮就像你看到的那样简单。正如我可能已经想象已经依赖注入是一个窍门。通过@Context注释,我可以要求JBoss注入HTTPServletRequest,我可以从中获取会话并调用invalidate。
该bean通过resteasy被称为RESTful服务。
在使用Java EE进行开发时,我发现我花费更多时间来跟踪如何在所有这些xml文件(maven配置是纯粹的地狱)中配置东西,要使用哪个API以及注入的方式和实际开发功能。
此方法不适用于单点登录模式。我与Jboss有问题 – vanduc1102
你是否在会话中保存数据? –
我没有在会话中保留任何数据。我只需要它进行身份验证。 – Christoph
你在使用什么安全服务?你在使用Spring Security吗?你有没有推出自己的登录服务?换句话说,您的应用程序是直接访问会话还是通过其他服务间接访问它? – Pace