LoginSignup
3
5

More than 5 years have passed since last update.

初回アクセス時にjsessionidを付与しなくする

Posted at

servlet 3.0環境の場合、web.xmlに以下を設定する。参考:java - Is it possible to disable jsessionid in tomcat servlet? - Stack Overflow それ以前のバージョンでのやり方の例は参考のリンク先に書いてある。

<session-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

springの場合は以下のようにする。参考:java - Set tracking mode to cookie to remove appended session id, without using web.xml - Stack Overflow

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.SessionTrackingMode;

import org.springframework.web.WebApplicationInitializer;

public class WebMVCApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) throws ServletException {
        Set<SessionTrackingMode> s = new HashSet<>();
        s.add(SessionTrackingMode.COOKIE);
        container.setSessionTrackingModes(s);
    }
}

spring-security-webを使っている場合はAbstractSecurityWebApplicationInitializerを使うこともできる。

<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>4.2.3.RELEASE</version>
</dependency>
import java.util.EnumSet;
import java.util.Set;

import javax.servlet.SessionTrackingMode;

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;

public class WebSecutityInit extends AbstractSecurityWebApplicationInitializer {
    @Override
    protected Set<SessionTrackingMode> getSessionTrackingModes() {
        return EnumSet.of(SessionTrackingMode.SSL);
    }
}
3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5