[英]getting the value of session attribute from jsp in Servlet
我正在实现用于csrf预防的令牌,我将csrf令牌的值放在会话属性中,如下所示:
session.setAttribute("csrfToken", csrfToken);
我的登录页面获取该属性,并将该csrf令牌提交给servlet,我的login.jsp如下所示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags/struts-html" prefix="html" %>
<%@ taglib uri="http://devel.payo.org/tlibs/payo-core" prefix="payo" %>
<%@ page session="true" %>
<html:html>
***<input id="token" type="hidden" value="${sessionScope.csrfToken}" />***
<c:choose><c:when test="${not empty loggedUser}">
<head>
<meta http-equiv="refresh" content="0;URL=${pathPrefix}/home">
</head>
</c:when><c:otherwise>
<jsp:include page="/pages/general/layout/head.jsp" />
<payo:customizedFilePath type="style" name="login.css" var="loginUrl" groupId="${empty loggedUserId ? cookie.groupId.value : ''}" groupFilterId="${empty loggedUserId ? cookie.groupFilterId.value : ''}" />
<link rel="stylesheet" href="<c:url value="${loginUrl}" />">
<jsp:include flush="true" page="/pages/access/includes/loginDefinitions.jsp" />
<payo:includeCustomizedFile type="static" name="login.jsp" groupId="${empty loggedUserId ? cookie.groupId.value : ''}" groupFilterId="${empty loggedUserId ? cookie.groupFilterId.value : ''}" />
<script>
if (!is.ie6) {
var td = $('loginRegistration');
var div = $('loginRegistrationDiv');
if (td && div) {
div.style.height = (td.getHeight() - 10) + "px";
}
}
ensureLoginForm();
</script>
</c:otherwise></c:choose>
</html:html>
当我尝试从会话中获取包含令牌的隐藏输入的值时遇到的问题,我得到的只是null ...如果有人可以提供帮助,我将非常感激。这就是我检索值的方式。
String token = request.getParameter("token");
要从请求中获取“令牌”参数,您必须将输入元素名称指定为“令牌”
<input name='token' .../>
request.getParamerer(string name)方法根据名称属性获取参数
如果要使用<%@ page session =“ true”%>创建新会话,则使用$ {sessionScope.csrfToken} .make session =“ false”来生成令牌,然后尝试
我怀疑以下一行在进入此页面时正在进行新的会话,这导致它为空。
<%@ page session="true" %>
您能否将其<%@ page session="false" %>
,然后进行交叉检查。 我坚信,它应该起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.