Сохраняется ли pageContext.request.userPrincipal в сеансе? Могу ли я получить пароль тоже?
Я изучаю безопасность Spring и, как я понимаю, используя request.getUserPrincipal()
мы могли бы получить доступ к имени, мы могли бы получить имя с pageContext.request.userPrincipal.name
,
Это мой код (все работает):
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page session="true"%>
<html>
<body>
<h5>Title : ${title}</h5>
<h5>Message : ${message}</h5>
<c:if test="${pageContext.request.userPrincipal.name != null}">
<h2>Hi User : ${pageContext.request.userPrincipal.name}></h2>
<br>
</c:if>
</body>
</html>
мои вопросы:
1). Это имя на pageContext.request.userPrincipal.name
извлечено из сессии? потому что есть <%@page session="true"%>
в верхней части формы
2). Можно ли восстановить пароль? Я имею в виду что-то вроде pageContext.request.userPrincipal.password
Если нет, то как я мог получить пароль в форме?
Спасибо, я очень ценю вашу помощь, чтобы я понял эту структуру, потому что у меня нет достаточно денег, чтобы купить некоторые книги по пружинам, я просто использую некоторые учебники в Интернете, так что ваша помощь будет для меня так много значить.
1 ответ
Получено ли это имя на pageContext.request.userPrincipal.name из сеанса?
Нет, он получен из request
не из session
, Однако под покровом структура безопасности может хранить внутренний идентификатор в сеансе HTTP. Но это должно быть твоим наименьшим беспокойством.
Между прочим, есть более короткий способ получить основное имя.
${pageContext.request.remoteUser}
Смотрите также Как получить атрибуты входа из сервлета / jsp.
потому что есть <% @ page session = "true"%> в верхней части формы
Это имеет другое значение и уже используется по умолчанию. По умолчанию при открытии JSP он неявно создает сеанс HTTP, если он еще не создан. Это может быть нежелательно на страницах, которые предназначены для сохранения состояния. Разработчики будут затем использовать <%@page session="false"%>
отключить неявное создание сеанса и оставить его для кода сервлета. Смотри также: Можно ли отключить HttpSession в web.xml?
Можно ли восстановить пароль? Я имею в виду что-то вроде pageContext.request.userPrincipal.password, если нет, то как я могу получить пароль в форме?
Основываясь на комментариях к вопросу, я понял, что вам это нужно для подтверждения логина. Это не имеет никакого смысла. Если бы логин был недействительным, во-первых, не было бы зарегистрированного пользователя.