如何在 ContainerRequest 中获取会话对象以使用注解 @RolesAllowed(Role_user)?
Posted
技术标签:
【中文标题】如何在 ContainerRequest 中获取会话对象以使用注解 @RolesAllowed(Role_user)?【英文标题】:How to get a session Object in the ContainerRequest to can use the annotation @RolesAllowed(Role_user)? 【发布时间】:2013-08-12 00:06:51 【问题描述】:我正在使用带有 Jersey 的 App Engine 构建应用程序。我想使用允许在请求中创建过滤器的注释@RolesAllowed(Role_user)
。
问题是我们需要配置类SecurityContextFilter
。
我的目标是将用户的id
存储在会话中,然后直接在我的班级SecurityContextFilter
的function : public ContainerRequest filter(ContainerRequest request)
中检查他们的角色。
我需要注入 HttpRequest
来获取会话,但是当我注入它时,我得到一个异常 Java.lang.Null
。
我想在 ContainerRequest
类中获取会话对象。
我该怎么做?
编辑:
我已经找到了解决这个问题的方法,但我不知道这是否干净:您可以直接在函数中注入 HttpRequest:isUserInRole(_role) 所以我使用它,然后通过会话获取我的 userId,然后获取角色用户,然后检查该角色是否匹配 _role 并返回 true 或 false。
【问题讨论】:
我想我有同样的问题..你尝试用@Context private HttpServletRequest httpRequest注入HttpRequest; .. 正确的?我以这种方式尝试过,过滤器内的httpRequest为null 是的!这正是我试图做的!但我仍然没有回应。如果您对此问题有解决方案,请告诉我。 不..我还没有找到任何东西.. 【参考方案1】:我很不确定您是否可以在球衣的ContainerRequestFilter
之上注入HttpServletRequest
,但您仍然可以通过编程方式而不是使用注释:
@Override
public ContainerRequest filter(ContainerRequest request)
if(request.isUserInRole("SOME_ROLE"))
//process some treatement
return request;
BR。
【讨论】:
以上是关于如何在 ContainerRequest 中获取会话对象以使用注解 @RolesAllowed(Role_user)?的主要内容,如果未能解决你的问题,请参考以下文章
在鼠标单击方法中,当我调用方法获取 X() 并获取 Y() 时,无论位置如何,它都会返回 -8 [关闭]