如何在tomcat中使用realm login-config进行无效和登录

时间:2013-07-09 02:32:59

标签: java tomcat login

我有一个领域和一个登录页面/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继续管理身份验证(当用户尝试访问受限页面而不登录时,我会保留login-config表单?)

1 个答案:

答案 0 :(得分:0)

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

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