当前位置: 首页 > 知识库问答 >
问题:

Wildfly Swarm RESTeasy隐藏webapp/索引。html

裴姚石
2023-03-14

我正在做一个基于野蝇群的项目。我目前遇到的问题是RESTEasy隐藏了我的index.html(和其他html文件),这些文件放在 /webapp下面,因为RESTEasy正在根级别监听。

我的主要应用程序:

@ApplicationPath("/")
public class XYZnlineApplication extends Application {
}

我的一个资源:

@Path("protected/api/admin")
public class AdminResource {
    @GET
    @Path("public/api/offer/reduced")
    @Produces("application/json")
    public List<XYZ> getXYZ() {
        ...
    }

    @GET
    @Path("protected/api/offer/full")
    @Produces("application/json")
    public List<XYZ> getAllXYZ() {
        ...
    }
}

问题是。如果我启动我的野蝇群应用程序并访问上面的一个restendpoint,一切都正常(例如http://localhost:8080/app/public/api/offer/reduced)

但是,如果我想访问/webapp正下方的一个html(例如login.html)文件,我会得到404,尽管该文件捆绑正确(例如,在尝试访问时http://localhost:8080/app/login.html). 所以在我看来,RESTeasy隐藏了这个html文件,因为它侦听根(/)。

由于url的第一部分是上下文(由代理注入),因此在XYZApplication中只能将root(/)设置为ApplicationPath。

你知道我如何解决这个问题吗?

事先非常感谢您的帮助。

共有1个答案

余天宇
2023-03-14

您需要将ApplicationPath更改为类似于“/services”或“/svc”或任何适合您的内容。最终,您需要在静态资源和服务之间划分URL命名空间。在指定ApplicationPath时,您不需要担心上下文。

主要编辑:
您的评论确实解释了发生的事情。我不确定您使用的是哪种类型的安全性,但最终您可能需要在您的服务前面设置某种过滤器。我想要的是:

@Provider
@Priority(Priorities.AUTHENTICATION)
@PreMatching
public class AuthFilter implements ContainerRequestFilter {
    @Context
    private HttpServletRequest httpServletRequest;

    @Context
    private HttpServletResponse httpServletResponse;

    @Override
    public void filter(ContainerRequestContext containerRequestContext) throws IOException  {
        if( containerRequestContext.getUriInfo().getPath().contains("/public/") )
            return; // user is in public area - doesn't matter if they are authenticated

        // guess at how to check if user is authenticated
        if( httpServletRequest.getSession().get("user_is_ok") )
            return;

        httpServletResponse.sendRedirect("/login");
        // or maybe
        httpServletResponse.sendError(SC_UNAUTHORIZED);   
    }
}

同样,这是一种猜测,但这是处理挑战的一种非常常见的方法。

 类似资料:
  • 问题内容: 显示大pandas数据框时是否可以隐藏索引,以便仅列名出现在表格的顶部? 这将需要同时适用于ipython笔记本中的html表示形式和to_latex()函数(我正在与nbconvert一起使用)。 助教。 问题答案: 组 对于ipython笔记本: 对于to_latex:

  • 本文向大家介绍移动端WebApp隐藏地址栏的方法,包括了移动端WebApp隐藏地址栏的方法的使用技巧和注意事项,需要的朋友参考一下 1、很多资料说,添加以下代码,可以隐藏地址栏,但我试了很多次,貌似不成功啊。 2、我们可以通过另一种方法来隐藏地址栏。在页面加载完成之后滚动窗口,这个确实有效,唯一要注意的是页面高度必须够高,核心代码如下: 3、但是当页面高度自适应窗口(height:100%),以上

  • 我尝试了下面的代码在移动和桌面上以不同的方式显示。但是两个句子同时显示。

  • 我们想隐藏“有优惠券吗?添加一张…”在WooCommerce结账时,如果已添加优惠券或客户在结账页面上添加优惠券。 目前,我们在下面有此代码,当客户在购物车页面输入优惠券,然后导航到结帐页面时,此代码有效。在这种情况下,“拥有优惠券?添加一张…”消息不可见。如果购物车页面上未添加优惠券,则消息可见。 这很好用!但是,当客户在结账页面上添加优惠券时,它不起作用。 1.)我们收到消息“优惠券已添加”,

  • 问题:如果距离为空/null,我试图隐藏一个值。 我尝试了以下操作,但该值仍在显示: 和 什么是实现我所期待的正确方法。 以下是我在coldfusion中定义距离的方式: 当我做以下建议时: ng-show="e.distance===未定义" 当我执行其他建议时,例如ng hide=“e.distance”, 以下是提供商包含的内容:

  • 我正在使用tomcat7,并且有一个需要在ROOT下部署的小型Java应用程序。原因与客户端此时无法指定webapp的正确上下文路径有关。 我有一个索引。这个webapp中的html和我的问题是,当我在webapp名称${catalina\u home}/mywebapp(索引)下部署应用程序时。导航到时html呈现没有问题http://localhost:8080/mywebapp. 然而,当我