gpt4 book ai didi

java - Google App Engine - 仅对 POST 方法应用安全约束?

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:00 26 4
gpt4 key购买 nike

我正在使用 Java 中的 GAE 构建一个 Web 应用程序。我在申请 <security-constraint> 时遇到问题在 web.xml 中仅适用于 servlet 的 POST 方法。

这是我的 web.xml 的相关部分

    <security-constraint>
<web-resource-collection>
<web-resource-name>data</web-resource-name>
<url-pattern>/data</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>

所以我只想在调用 POST 方法时强制执行身份验证。应允许所有用户使用 GET 方法。

我测试了上面的代码,它在本地主机开发服务器中运行良好。但当我实际将其部署到 App Engine 时,它​​不起作用。即使“数据”Servlet 的 GET 方法也需要身份验证。每当我在上述 URL 上尝试 GET 方法时,都会收到 302 已找到响应,响应 header 中包含身份验证 URL。看来 GAE 正在将安全约束应用于 GET 和 POST 方法,而不仅仅是 POST 方法。

任何帮助将不胜感激。

最佳答案

如果您必须 POST 到同一个 Java 应用程序,请添加单独的 url 模式。即/data1。然后对该模式施加安全约束。我尝试了这个并且有效:

<servlet-mapping>
<servlet-name>JavaAppName</servlet-name>
<url-pattern>/data</url-pattern>
<url-pattern>/data1</url-pattern>
</servlet-mapping>

      <web-resource-collection>
<web-resource-name>JavaAppName</web-resource-name>
<url-pattern>/data1</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>

只需确保将 HTML POST 更新到正确的目标即可。

理想情况下,您应该将 GET 和 POST 拆分为单独的文件。

关于java - Google App Engine - 仅对 POST 方法应用安全约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25085458/

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