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

Fla*_*ert 8 java google-app-engine jersey servlet-filters

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

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

我的目标是让id用户存储在会话中,然后直接在function : public ContainerRequest filter(ContainerRequest request)我的班级中检查他们的角色SecurityContextFilter.

我需要注入HttpRequest以获取会话,但是当我注入它时,我得到一个异常Java.lang.Null.

我想在课堂上获得一个会话对象ContainerRequest.

我怎样才能做到这一点?

编辑:

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

tma*_*wen 1

我不确定您是否可以HttpServletRequest在球衣顶部注入 a ContainerRequestFilter,但您仍然可以以编程方式执行此操作,而不是使用注释:

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

BR。