gpt4 book ai didi

http - 在哪里连接 Grizzly 中的身份验证?

转载 作者:可可西里 更新时间:2023-11-01 15:21:45 26 4
gpt4 key购买 nike

我正在使用 Grizzly HttpServer,它注册了两个 HttpHandler 实例:

  • /api/* 下有一个 Jersey REST 风格的应用程序,提供产品的 API,并且
  • /* 下有一个 StaticHttpHandler 提供静态 HTML/JavaScript 内容(其中,与 /api/< 下的 API 对话)/

对于身份验证,我目前使用实现 HTTP Basic Auth 的 Jersey ContainerRequestFilter 保护 API,它看起来与 another SO question 中提供的非常相似.

但是随着要求的改变,现在我想要对访问服务器的所有 请求进行身份验证。所以我想将身份验证提升一个级别,从 Jersey 到 Grizzly。不幸的是,我完全不知道在哪里可以连接 Grizzly 中的“请求过滤器”(或任何名称)。有人可以指出相关的 API 来完成这个吗?

最佳答案

最简单的解决方案是利用 Grizzly 嵌入式 Servlet 支持。

这当然意味着您需要做一些工作来将您当前的 HttpHandler 逻辑迁移到 Servlet - 但这真的不应该太多困难,因为 HttpHandler API 非常相似。

我会给出一些高层次的观点。

HttpServer server = HttpServlet.createSimpleServer(<docroot>, <host>, <port>);
// use "" for <context path> if you want the context path to be /
WebappContext ctx = new WebappContext(<logical name>, <context path>);

// do some Jersey initialization here

// Register the Servlets that were converted from HttpHandlers
ServletRegistration s1 = ctx.addServlet(<servlet name>, <Servlet instance or class name>);
s1.addMapping(<url pattern for s1>);
// Repeat for other Servlets ...

// Now for the authentication Filter ...
FilterRegistration reg = ctx.addFilter(<filter name>, <filter instance or class name>);
// Apply this filter to all requests
reg.addMapping(null, "/*");

// do any other additional initialization work ...

// "Deploy" ctx to the server.
ctx.deploy(server);

// start the server and test ...

注意:Servlet 和过滤器的动态注册基于 Servlet 3.0 API,因此如果您想了解如何处理 Servlet 监听器、初始化参数等信息,我建议您查看 Servlet 3.0 javadoc。

注意 2:Grizzly Servlet 实现并非 100% 兼容 Servlet 规范。它不支持标准的 Servlet 注释部署,也不支持传统的 Servlet Web 应用程序归档部署。

最后,有使用嵌入式 Servlet API 的示例 here

关于http - 在哪里连接 Grizzly 中的身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19381113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com