servlets - 生成新的 session ID

标签 servlets session-fixation

如何使用 out extends HttpServlet 类生成新的 session ID。是否必须扩展 HttpServlet 类 & 是否必须在 doGet 方法中生成新的 session ID

public class LoginSupport extends ActionSupport {

    public void prepare() {
        HttpSession session = ServletActionContext.getRequest().getSession();
        session.invalidate();
        //How to genarate new session id
    }
}

最佳答案

在调用HttpSession#invalidate()之后,您可以通过调用HttpServletRequest#getSession()来创建一个新 session 。

例如

public void prepare() {
    final HttpServletRequest request = ServletActionContext.getRequest();
    request.getSession().invalidate();

    // generate new session (and id)
    final HttpSession newSession = request.getSession();
}

来自您服务器的下一个 HTTP 响应应该包含一个新的 session ID,例如

Set-Cookie: JSESSIONID=6a303082951311647336934;path=/

来自 https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletRequest.html#getSession--

getSession

HttpSession getSession()

Returns the current session associated with this request, or if the request does not have a session, creates one.

关于servlets - 生成新的 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48899358/

相关文章:

java - 从 html 表单向 java 发送值不正确

java - 如何从 JMS 读取和收集响应消息并使它们可供正确的 servlet 线程使用?

java - 防止 Java 中的 HTTP 响应拆分攻击

java - 无法在 Servlet 应用程序中使用 Thymeleaf 访问请求属性或参数

java - Vert.x Web 和 session 固定

ruby-on-rails - 如何在 Rails 3 中的 reset_session 命令之后找到新的 session_id?

java - 创建Servlet时出现"HTTP 405"? (doPost 和 doGet 实现)

ruby-on-rails - rails/RSpec : reset_session not changing Set-Cookie HTTP header value during integration tests

ruby-on-rails - Rails4 安全 : Session fixation possible at all using encrypted cookies?