0

我正在使用 JDBCRealm 和 tomcat 7。我想构建一个简单的登录页面。这是我的登录表单:

登录表单

我的 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>

一旦他通过身份验证,我想将用户重定向到某个 a.jsp 页面。我怎样才能做到这一点?

4

2 回答 2

1

我理解你想要重定向你的用户取决于角色。假设如果用户是管理员,那么他/她应该被重定向到 admin.jsp(例如),如果用户是经理角色并且他/她应该被重定向到经理.jsp。

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

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

所以你必须设置的是:

  1. 如您所述,创建您的 login.jsp 和 login-failed.html。

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

WebContent/htmlPages/admin.jsp 放 <h4>Welcome Admin</h4>text in body tag.

WebContent/htmlPages/manager.jsp put <h4>Welcome Admin</h4>text in body tag.

  1. In LoginServlet.jsp in doGet MEthod put this simple code:

    if(request.isUserInRole("admin")) { response.sendRedirect("htmlPages/admin.jsp");
    } if(request.isUserInRole("manager")){ response.sendRedirect("htmlPages/manager.jsp");
    }

  2. After that you have to set welcome-files as the login servletin web.xml e.g. Suppose IN web.xml your servlet entry is

    <servlet> <description></description> <display-name>LoginServlet</display-name> <servlet-name>LoginServlet</servlet-name> <servlet-class>Fully classified name of LoginServlet</servlet-class>
    </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/loginServlet</url-pattern> </servlet-mapping>

Then get url pattern from Servlet Mapping and put it in welcome file list without any slash: like

<welcome-file-list> <welcome-file>loginServlet</welcome-file> </welcome-file-list>

确保没有包含斜线。当我输入代码 loginServlet 时,欢迎文件属性应该没有斜线。

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

于 2013-08-28T10:14:22.973 回答
0

你没有。这不是 FORM 身份验证的工作方式。用户请求页面。如果它需要身份验证,那么他们会收到登录页面而不是他们请求的页面。然后他们输入他们的凭据,如果有效,就会显示他们最初请求的页面。

如果您坚持滥用 FORM 身份验证过程,您可以设置 org.apache.catalina.authenticator.FormAuthenticator 的landingPage 属性。有关完整详细信息,请参阅文档 ( http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Form_Authenticator_Valve )。

于 2013-08-18T18:48:33.493 回答