2

我有一个旧的 servlet ABC,使用 web.xml 来定义它的表单登录(这是另一个 servlet XYZ,存储在另一个 JAR 文件中,并集成在路径 WEB-INF\lib 下的 WAR 中):

<login-config>
  <auth-method>FORM</auth-method>
  <form-login-config>
    <form-login-page>/login</form-login-page>
    <form-error-page>/login?event=Retry</form-error-page>
  </form-login-config>
</login-config>

现在我使用新的 Servlet 3.0 注释迁移了 servlet ABC。我有一个@WebServlet和一个@ServletSecurity注释。但是如何定义我的登录配置是基于表单的登录(auth-method在 web.xml 中)以及 webcontainer 应该将请求重定向到哪个 URL(form-login-page在 web.xml 中)?我找到了一个教程,说明在使用基于表单的登录时,我必须使用部署描述符。

我在 servlet 3.0 规范中没有找到关于此的评论。有人知道这是否正确吗?或者是否有任何注释或其他方式阻止我使用部署描述符?

4

1 回答 1

4

斯蒂芬,

我也一直在尝试为我的应用程序找到所有注释配置。

您是对的 - 配置基于表单的身份验证的唯一方法是使用部署描述符(web.xml 或 web-fragment.xml)。

根据JSR-315 Servlet 3.0 规范 :: Ch13.6.3 (pg132)

“Web 应用程序部署描述符包含登录表单和错误页面的条目......”

规范仅指表单登录配置的 Web 部署描述符,而不是任何基于注释的配置。

此外,请查看JSR-315 Servlet 3.0 Specification :: Ch8.1 (pg61-64) - 没有可以实现基于表单的身份验证配置的 Servlet 注释的概念。

实际上,所有的 Ch8 都非常有用,尤其是JSR-315 Servlet 3.0 Specification :: Ch8.2.3 (pg72-84),它解释了 web.xml、web-fragment.xml 和注解是如何组合在一起的以及以何种顺序组合在一起的.

我简要查看了2013 年 5 月 28 日刚刚发布的JSR-340 Servlet 3.1 规范规范。似乎他们没有为基于表单的身份验证配置添加任何新规定,请参阅JSR-340 Servlet 3.1 规范 :: Ch13.6.3 (第 139 页) ...

祝你好运 ;)

于 2013-08-09T23:21:31.403 回答