手把手教你干掉 SpringBoot 项目地址栏中 URL 后面的 jsessionid

出大 Bug 了,本来公司年会的抽奖程序已被同事写好了,人事临危任命同事再改一下程序,内置特等奖是一位高管。

同事已开始也是拒绝的,奈何敌不住人事的诱惑。最终答应了更改程序,结果年会现场抽特等奖翻车了。

手把手教你干掉 SpringBoot 项目地址栏中 URL 后面的 jsessionid
年会抽奖程序翻车了

这事的结果先暂且不表。我发到群里后,群里的一位网友以为我在闲着,于是给我丢过来一个问题。SpringBoot 中如何把浏览器 url 中的 jsessionid 去掉。

这个问题很简单,分两种情况。

如果只是单纯的 SpringBoot,只需在启动类中继承 SpringBootServletInitializer,然后重写 onStartup 方法。

public void onStartup(ServletContext servletContext) throws ServletException {
    super.onStartup(servletContext);
    // This will set to use COOKIE only
    servletContext.setSessionTrackingModes(
            Collections.singleton(SessionTrackingMode.COOKIE)
    );
    // This will prevent any JS on the page from accessing the
    // cookie - it will only be used/accessed by the HTTP transport
    // mechanism in use
    SessionCookieConfig sessionCookieConfig =
            servletContext.getSessionCookieConfig();
    sessionCookieConfig.setHttpOnly(true);
}

或者是在 yml 文件中,做以下配置:

server:
  session:
    # 会话sessionid存在cookie中,方便追踪,不设置会携带在url后面
    tracking-modes: cookie

然后重启项目就可以了。

但如果你的项目集成了 Spring Security,那就需要重写 WebSecurityConfigurerAdapter 的 configure 方法。

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
    .sessionManagement()
    .sessionCreationPolicy(SessionCreationPolicy.NEVER)
    .and()
    .csrf().disable();  
}

上面的三种做法都可以解决 url 中带 JSESSIONID 的问题。希望能够帮助到大家!

手把手教你干掉 SpringBoot 项目地址栏中 URL 后面的 jsessionid

: » 手把手教你干掉 SpringBoot 项目地址栏中 URL 后面的 jsessionid

原创文章,作者:wdmbts,如若转载,请注明出处:https://blog.ytso.com/252178.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论