0

我有一个领域和一个登录页面,该页面/login提供了用于登录领域的表单。我希望用户能够直接导航到登录页面并首次登录导致重定向到应用程序的主页,或者以新用户(或同一用户)身份登录,这也发送他们到应用程序的主页。这里有两个问题:

1) 如果登录的用户直接进入登录页面并尝试以其他用户身份登录,我会收到 404 错误The requested resource (/myapp/j_security_check) is not available.

2)如果用户第一次登录,我收到错误 400 说The request sent by the client was syntactically incorrect (Invalid direct reference to form login page).

是否可以按照我描述的方式使用登录表单,还是必须通过 servlet 使用第二个登录页面手动登录?如果我必须创建自己的,我如何登录它们以便 tomcat 继续管理身份验证(当用户尝试访问受限页面而不登录时,我会保留登录配置表单)?

4

1 回答 1

0

我发现不能以<login-config>这种方式使用表单。但是,servlet 3.0 规范让我们可以访问一些有用的功能,这些功能允许您编写自己的 servlet 来让用户登录。HttpServletRequest#loginHttpServletRequest#logout让您在与 servlet 上下文相关联的领域之外登录用户。此外,您可以通过检查用户主体对象来检查用户是否登录到领域HttpServletRequest#getUserPrincipals

我在路径上的 servlet 中使用这些函数设置了我的自定义登录页面,/login并且我还有一个几乎相同的 servlet/jsp,领域身份验证器将转发到该页面,但不同之处在于表单将提交到j_security_check. 可能有一种奇特的方法可以重用第一个登录 servlet/jsp 并只更改action表单中的属性和字段,但我将把它留到另一天。

于 2013-07-09T21:31:11.657 回答