Authentication Tomcat7-JDBCRealm登录

Authentication Tomcat7-JDBCRealm登录,authentication,login,tomcat7,jdbcrealm,Authentication,Login,Tomcat7,Jdbcrealm,我将JDBCRealm与Tomcat7一起使用。我想建立一个简单的登录页面。 这是我的登录表单: 我的web.xml内容是: <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/user/login.jsp</form-login-page> <for

我将JDBCRealm与Tomcat7一起使用。我想建立一个简单的登录页面。 这是我的登录表单:

我的web.xml内容是:

 <login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/user/login.jsp</form-login-page>
        <form-error-page>/user/login-failed.html</form-error-page>
    </form-login-config>
 </login-config>

形式
/user/login.jsp
/user/login-failed.html
我想在用户通过身份验证后将其重定向到某个a.jsp页面。
我该怎么做呢?

你不需要。表单身份验证不是这样工作的。用户请求一个页面。如果需要身份验证,则他们会收到登录页面,而不是他们请求的页面。然后,他们输入他们的凭据,如果有效,将显示他们最初请求的页面


如果坚持滥用表单身份验证过程,可以设置org.apache.catalina.authenticator.FormAuthenticator的landingPage属性。有关详细信息,请参阅文档()。

据我所知,您想要重定向用户的原因取决于角色。假设用户是管理员,则应将其重定向到admin.jsp(例如),如果用户是经理角色,则应将其重定向到manager.jsp

让我们假设您在JDBCRealm中定义了两个角色admin和manager

您可以通过在项目中创建一个servlet来实现这一点,例如LoginServlet.java

因此,您必须设置以下内容:

  • 如前所述,创建login.jsp和login-failed.html

  • 在动态web项目的WebContent中的任意文件夹下创建两个jsp页面admin.jsp和manager.jsp 说:

  • WebContent/htmlpage/admin.jsp put
    欢迎管理员
    正文标记中的文本

    WebContent/htmlpage/manager.jsp put
    欢迎管理员
    正文标记中的文本

  • 在LoginServlet.jsp的doGet方法中 把这个简单的代码:

    if(request.isUserInRole(“admin”))
    {
    response.sendRedirect(“htmlpage/admin.jsp”);
    } if(request.isUserInRole(“manager”)){ response.sendRedirect(“htmlpage/manager.jsp”);
    }

  • 之后,您必须将欢迎文件设置为登录servletinweb.xml 例如 假设在web.xml中,servlet条目是

    罗金瑟夫莱特酒店 罗金瑟夫莱特酒店 LoginServlet的完全分类名称
    罗金瑟夫莱特酒店 /罗金瑟夫莱特酒店
  • 然后从Servlet映射中获取url模式,并将其放入欢迎文件列表中,不带任何斜杠: 像

    罗金瑟夫莱特酒店

    确保没有包含斜杠。正如我在代码loginServlet中所说的,欢迎文件属性应该没有斜杠

    运行此代码。:-)您将被重定向到相应的jsp页面