我正在将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。