2013-08-18 39 views
0

我在Tomcat 7中使用JDBCRealm。我想构建一个简单的登录页面。 这是我的登录表单:Tomcat 7 - JDBCRealm登录

Login Form

和我的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页面,一旦他被验证。 我该怎么做?

回答

0

你没有。这不是FORM认证的工作方式。用户请求一个页面。如果它需要验证,那么他们会收到登录页面而不是他们请求的页面。然后他们输入他们的凭证,并且如果有效的话会得到他们最初请求的页面。

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

1

事情我明白你想重定向你的用户取决于角色。假设用户是管理员,那么他/她应该被重定向到admin.jsp(例如),如果用户在管理员角色和他/她应该重定向到manager.jsp。

让我们假设你在你的JDBCRealm管理员和管理员定义的两个角色

您可以通过在项目,例如创建一个servlet LoginServlet.java

你必须设置

所以事情做到这一点是:

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

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

的WebContent/htmlPages/admin.jsp放在身体标记 <h4>Welcome Admin</h4>文本。

WebContent/htmlPages/manager.jsp put <h4>Welcome Admin</h4>正文标签中的文字。

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

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

  2. 之后,你必须设置欢迎-文件作为登录servletin web.xml中 例如 假设在网络中。XML你的servlet条目

    <的servlet > <描述> < /描述> <显示名称> LoginServlet < /显示名称> < servlet的名字> LoginServlet </servlet的名字> < servlet- class > LoginServlet的完整分类名称</servlet-class >
    </servlet的> < Servlet映射> < servlet的名称> LoginServlet </servlet的名称> < URL模式>/loginServlet </URL模式> </Servlet映射>

然后从Servlet映射中获取url模式,并将其放入欢迎文件列表中,不加斜杠: lik Ë

<欢迎文件列表> <欢迎文件> loginServlet < /欢迎文件> < /欢迎文件列表>

确保没有斜杠已被列入。欢迎文件属性应该没有斜杠,因为我在代码loginServlet中。

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