Java 如何在tomcat中使用领域登录配置使其失效并登录

Java 如何在tomcat中使用领域登录配置使其失效并登录,java,tomcat,login,Java,Tomcat,Login,我有一个领域和一个登录页面/login,它提供了登录领域的表单。我希望用户能够直接导航到登录页面,并在第一次登录时重定向到应用程序的主页,或者作为新用户(或同一用户)登录,这也会将他们发送到应用程序的主页。这里有两个问题: 1) 如果登录的用户直接进入登录页面并尝试以其他用户身份登录,我会收到404错误请求的资源(/myapp/j_security_check)不可用。 2) 如果用户第一次登录,我会收到一个错误400,说客户发送的请求语法不正确(对表单登录页的直接引用无效)。 是否可以按照我描

我有一个领域和一个登录页面
/login
,它提供了登录领域的表单。我希望用户能够直接导航到登录页面,并在第一次登录时重定向到应用程序的主页,或者作为新用户(或同一用户)登录,这也会将他们发送到应用程序的主页。这里有两个问题:

1) 如果登录的用户直接进入登录页面并尝试以其他用户身份登录,我会收到404错误
请求的资源(/myapp/j_security_check)不可用。

2) 如果用户第一次登录,我会收到一个错误400,说客户发送的请求语法不正确(对表单登录页的直接引用无效)。


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

我发现不可能以这种方式使用
表单。然而,Servlet3.0规范允许我们访问一些有用的函数,这些函数允许您编写自己的servlet,以便用户登录
HttpServletRequest#login
HttpServletRequest#logout
允许您将用户登录到与servlet上下文关联的域之外的域中。此外,您可以通过使用
HttpServletRequest\getUserPrincipals
检查用户主体对象来检查用户是否登录到该领域

我在路径
/login
的servlet中使用这些函数设置了我的自定义登录页面,我还有一个几乎相同的servlet/jsp,领域验证器将转发给它,但不同的是表单将提交给
j_安全检查。可能有一种奇特的方法可以重用第一个登录servlet/jsp,只需更改表单中的
action
属性和字段,但我将把它留到另一天