首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Servlet中的jsp获取会话属性值

从Servlet中的jsp获取会话属性值
EN

Stack Overflow用户
提问于 2016-11-21 23:01:04
回答 3查看 1.6K关注 0票数 1

我正在为csrf预防实现令牌,我将csrf令牌的值放在会话属性中,如下所示:

代码语言:javascript
复制
session.setAttribute("csrfToken", csrfToken);

我的登录页面获取该属性并将该csrf令牌提交给servlet,我的login.jsp如下所示:

代码语言:javascript
复制
  <!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……我将非常感谢,如果有人可以help.This是我如何检索的价值。

代码语言:javascript
复制
 String token = request.getParameter("token");
EN

回答 3

Stack Overflow用户

发布于 2016-11-22 03:41:08

要从请求中获取“token”参数,必须将输入元素名称指定为“token”

代码语言:javascript
复制
<input name='token' .../>

request.getParamerer(string name)方法根据名称属性获取参数

票数 0
EN

Stack Overflow用户

发布于 2016-11-28 14:01:19

如果使用<%@ page session="true“%>创建新会话,则使用${sessionScope.csrfToken}.make session="false”创建令牌所在的位置,然后尝试

票数 -1
EN

Stack Overflow用户

发布于 2016-11-30 18:44:12

我怀疑下面这行代码在访问此页面时创建了一个新会话,这导致它为空。

代码语言:javascript
复制
<%@ page session="true" %>

你能把它改成<%@ page session="false" %>,然后再交叉核对吗?我坚信,它应该行得通。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40723144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档