gpt4 book ai didi

java - GAE 留言板 Java 教程。强制验证/签署 servlet 会导致重定向出现 405

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

我已经完成了留言簿教程,并且一直在尝试对/sign servlet 强制进行身份验证。这是我在 web.xml 中放入的内容

<servlet>
<servlet-name>sign</servlet-name>
<servlet-class>com.google.appengine.demos.guestbook.SignGuestbookServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sign</servlet-name>
<url-pattern>/sign</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>sign</web-resource-name>
<url-pattern>/sign/*</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>

当尝试签署留言簿时,我被正确重定向到登录屏幕,但是一旦我单击“登录”,我就会收到以下错误

Error 405 HTTP method GET is not supported by this URL

看来重定向是 GET 而不是 POST。

任何帮助将不胜感激!

最佳答案

我想你问题的核心是,当用户被重定向到Google登录页面时,Google并没有真正使用POST将它们返回到你的应用程序,我认为它只是一个GET,所以总而言之,我怀疑Google登录是否会保留你原来的POST签名,并在用户通过身份验证后将其重放回你的应用程序。因此,您可以采取的一种方法是,如果用户未登录,则隐藏签名表单,然后显示一条消息,要求他们单击登录链接。例如,在 guestbook.jsp 上的第 80 行:

<%
if (user != null) {
%>
<form action="/sign" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Post Greeting"/></div>
<input type="hidden" name="guestbookName" value="${fn:escapeXml(guestbookName)}"/>
</form>
<%
} else {
%>
<span>Please login first to be able to sign the guestbook (click the login link above)</span>
<%
}
%>

顺便说一下,我还没有测试过这个。

我过去必须使用的其他更复杂的选项是在 servlet 前面使用过滤器,记住用户在 session 中的原始请求,制定登录 URL,将用户重定向到它,一旦用户回来处理他们的原始请求,但这很复杂,所以在你的情况下,你最好明确要求用户首先进行身份验证

关于java - GAE 留言板 Java 教程。强制验证/签署 servlet 会导致重定向出现 405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26246364/

25 4 0
文章推荐: python - Django子目录查看并导入__init__.py中的所有文件
文章推荐: 圆形和矩形地理围栏的 C 逻辑/算法?
文章推荐: python - 在 stackless python 中,通过 channel 发送的数据是不可变的吗?
文章推荐: html - 无法匹配
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com