我在Tomcat7中使用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页面。我该怎么做呢?
发布于 2013-08-28 18:14:23
我知道你想要重定向你的用户取决于role.Suppose,如果用户是管理员,那么他/她应该被重定向到admin.jsp (例如),如果用户是经理角色,他/她应该被重定向到manager.jsp。
假设您的JDBCRealm中定义了两个角色admin和manager
您可以通过在项目中创建servlet来实现此目的,例如LoginServlet.java
因此,您必须设置的内容是:
当您登录到动态web项目的WebContent中任意文件夹下的两个jsp页面admin.jsp和manager.jsp时,创建login.jsp和-
WebContent/htmlPages/admin.jsp put <h4>Welcome Admin</h4>text in body tag.
WebContent/htmlPages/manager.jsp put <h4>Welcome Admin</h4>text in body tag.
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");
}
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-19 02:48:33
不需要。这不是表单身份验证的工作方式。用户请求一个页面。如果需要身份验证,则他们会收到登录页面,而不是他们请求的页面。然后,他们输入他们的凭据,如果有效,将显示他们最初请求的页面。
如果您坚持滥用表单身份验证过程,您可以设置org.apache.catalina.authenticator.FormAuthenticator.的landingPage属性有关详细信息,请参阅文档(http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Form_Authenticator_Valve)。
https://stackoverflow.com/questions/18301059
复制相似问题