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

时间:2013-08-09 23:36:10

标签: java google-app-engine jersey servlet-filters

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

问题是我们需要配置类SecurityContextFilter

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

我需要注入SecurityContextFilter才能获得会话,但是当我注入会话时,我得到一个异常HttpRequest

我想在课程Java.lang.Null中获取会话对象。

我该怎么做?

修改

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

1 个答案:

答案 0 :(得分:1)

我很不确定你是否可以在HttpServletRequest的球衣上注射ContainerRequestFilter,但你仍然可以通过编程方式而不是使用注释:

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

BR。