我有一个在查询字符串中有一个令牌的 Web 方法,每个方法都使用这个令牌来识别请求的用户。为此,我创建了一个名称为 AuthenticationFilter 的 ResourceFilter,它从请求中获取令牌并从数据库中检索用户信息,如果用户有效,则允许执行该方法,否则会引发未授权异常。我的问题是:如何访问在 AuthenticationFilter 类中检索到的用户信息我的网络API:@GET@Consumes(MediaType.TEXT_PLAIN)@Produces({MediaType.APPLICATION_JSON})@Path("/getUserOrders")@ResourceFilters({AuthenticationFilter.class, AllowOroginFilter.class})public String getUserOrders(@Context UriInfo uriInfo) { //I need to access Usr object that retrived in AuthenticationFilter /*User Usr = AuthenticationFilter.Usr;*/ String Result = getUserOrders(Usr); return Result;}资源过滤器代码:public class AuthenticationFilter implements ResourceFilter, ContainerRequestFilter, ContainerResponseFilter { public User usr = null; @Override public ContainerRequest filter(ContainerRequest containerRequest) { usr = AuthenticationUtiity.AuthenticateRequest(containerRequest); if(usr == null){ Response.ResponseBuilder builder = null; String response = "{\"Success\":false, \"Message\":\"Invalid username or password\"}"; builder = Response.status(Response.Status.UNAUTHORIZED).entity(response); throw new WebApplicationException(builder.build()); } return containerRequest; } }我在谷歌上搜索并找到了一种方法可以使用 ThreadLocal 并将用户保存到 ThreadLocal 并在该线程中的任何位置获取它。https://veerasundar.com/blog/2010/11/java-thread-local-how-to-use-and-code-sample/有没有更简单的方法来做到这一点?谢谢
添加回答
举报
0/150
提交
取消