为了账号安全,请及时绑定邮箱和手机立即绑定

如何访问在 web api 方法中的 ResourceFilter 中生成的对象

如何访问在 web api 方法中的 ResourceFilter 中生成的对象

Qyouu 2021-06-08 13:53:14
我有一个在查询字符串中有一个令牌的 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/有没有更简单的方法来做到这一点?谢谢
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信