如何在ContainerRequest中获取会话对象以使用注释@RolesAllowed(Role_user)?

我正在使用带引擎的App Engine构建应用程序。 我想使用允许在请求中创建filter的注释@RolesAllowed(Role_user)

问题是我们需要配置SecurityContextFilter类。

我的目标是获取存储在会话中的用户的id ,然后直接在function : public ContainerRequest filter(ContainerRequest request)检查它们的角色function : public ContainerRequest filter(ContainerRequest request)我的类SecurityContextFilter function : public ContainerRequest filter(ContainerRequest request)

我需要注入HttpRequest来获取会话,但是当我注入它时,我得到一个exceptionJava.lang.Null

我想在ContainerRequest类中获取一个会话Object。

我怎样才能做到这一点?

编辑:

我已经找到了解决这个问题的方法,但我不知道这是否干净:你可以直接在函数中注入HttpRequest:isUserInRole(_role)所以我使用这个,然后我通过session得到我的userId然后得到角色用户我检查是否匹配_role并返回true或false。

我很不确定你是否可以在泽西的ContainerRequestFilter之上注入一个HttpServletRequest ,但你仍然可以通过编程方式而不是使用注释:

 @Override public ContainerRequest filter(ContainerRequest request) { if(request.isUserInRole("SOME_ROLE")){ //process some treatement } return request; } 

BR。