достаточно справедливый вопрос.
Есть несколько способов сделать это, и это действительно зависит от типа проекта. Вы ничего не упоминаете о базе данных, поэтому я начну с нее. Если у вас есть только имя пользователя и пароль в качестве полей в таблице пользователей в вашей базе данных, вы не сможете различить тип учетной записи, если не сохраните другое поле. Так что вам нужно что-то вроде поля типа учетной записи.
Отсюда вы можете начать видеть, как это закончится. Если у вас есть другое поле в пользовательской таблице, которое вы можете использовать для различения разных типов учетных записей, вы можете создать ограничения для ограничения содержимого. Глядя на ваш пример JavaScript, я вижу, что вы просто скрываете контент, относящийся к определенному типу пользователей. Я настоятельно рекомендую не использовать этот подход, потому что любой может просто просмотреть страницу, которую он просматривает, и изменить html / css, чтобы он мог видеть потенциально конфиденциальную информацию.
Хороший способ сделать это - обслуживать совершенно другие html-файлы / контент в зависимости от типа учетной записи пользователя. Ниже я создам быстрый пример использования JSP / JSTL для фильтрации содержимого в зависимости от типа учетной записи пользователя.
Допустим, у нас есть база данных с id, именем пользователя, паролем, account_type
Когда пользователь отправляет форму на странице входа в систему, сервлет проверит, совпадают ли введенные данные с данными в базе данных.
Логин сервлет
@WebServlet("/Login")
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
public Login() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//form on login page has method="post" action="Login"
HttpSession session = (request.getSession());
String username = request.getParameter("username");
String userpass = request.getParameter("userpass");
UserModel um = new UserModel();
if(um.validate(username, userpass)){ //checks database to see if details exist/match, returns true if they do.
String accountType = um.getAccountType(username); //gets account type of current user
session.setAttribute("username", username);
session.setAttribute("accountType", accountType); //set account type session variable (which we can access in our jsp)
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp"); //go to welcome page
rd.forward(request, response);
}else{
//error logic
RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
rd.forward(request, response);
}
}
}
Приветственная страница JSP
<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head><title>welcome</title></head>
<body>
//eq is short for equal in jstl
<c:if test="${accountType eq 'admin'}">
<p>Admin content...</p>
</c:if>
<c:if test="${accountType eq 'instructor'}">
<p>Instructor content...</p>
</c:if>
<c:if test="${accountType eq 'client'}">
<p>Client content...</p>
</c:if>
</body>
</html>
Сервер запускает jsp с jstl перед отправкой в браузер, поэтому вы не можете просматривать и просматривать содержимое пользователя, у которого нет нужного типа учетной записи ...
Надеюсь, это даст вам представление о том, что возможно. Дайте мне знать, если у вас есть вопросы