Я использую Apache Tomcat и сервлет для проверки имени пользователя и пароля из базы данных MySQL.
Код HTML-страницы:
<form action="./login" method="POST">
User name: <input type="text" name="username" size="20"><br>
Password: <input type="password" name="pwd" size="20">
<br><br>
<input type="submit" value="Submit">
</form>
Код сервлета:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;
public class VerifyLogin extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)throws IOException,ServletException
{
String n1 = req.getParameter("username");
String n2 = req.getParameter("pwd");
res.setContentType("text/html");
PrintWriter out = res.getWriter();
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","paSSword");
PreparedStatement ps = con.prepareStatement("select * from auth WHERE username=? && password=?");
ps.setString(1,n1);
ps.setString(2,n2);
ResultSet rs = ps.executeQuery();
if(rs.next())
{
res.sendRedirect("report.html");
}
else
{
res.sendRedirect("Invalid.html");
}
}
catch (Exception e)
{
System.out.println(e);
}
}
}
web.xml code:
<web-app>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>VerifyLogin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
Моя структура каталогов
=============>tomcat
+webapps
+myapp
+
+report.html
+report2.html
+xxxx.html
+WEB-INF
+classes
+lib
+web.xml
Мне удалось успешно проверить и перенаправить пользователя на нужную страницу (report.hmtl), проблема в том,когда пользователь копирует адрес после входа в систему, скажем http://192.168.2.2:8080/myapp/Reports.html и вставляет адрес в другом браузере, ему не будет предложено войти в систему.
report.html содержит больше ссылок, к которым можно получить доступ без входа в системуесли кто-то знает ссылку.ВСЕ .html страницы размещены вне папки WEB-INF. Как я могу защитить их от (например, report2.html, xxx.html) от прямого доступа?без преобразования html-страниц в jsp