我正在将App Engine与Jersey一起使用来构建应用程序。我想使用允许在请求中创建过滤器的批注@RolesAllowed(Role_user)

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

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

我需要注入(inject)HttpRequest来获取 session ,但是当我注入(inject)它时,我会得到一个异常Java.lang.Null

我想在ContainerRequest类中获取一个 session 对象。

我怎样才能做到这一点?

编辑:

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

最佳答案

我不太确定您是否可以在jersey的HttpServletRequest上注入(inject)ContainerRequestFilter,但是您仍然可以通过编程方式执行此操作,而不是使用批注:

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

BR。

09-28 11:54