You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google OAuth Sign in with Google登录后如何在Servlet中创建新会话

Sign in with Google 对接 Tomcat 10 Servlet 会话创建方案

首先你提到的前端构造表单提交用户姓名、邮箱到后端Servlet的方案仅可用于本地测试,绝对不能上线:前端提交的明文用户信息可以被任意篡改,攻击者随便构造请求就能伪造任意用户身份登录。

标准安全实现流程

  • 前端onSignIn回调中不要自行提取邮箱、姓名信息,直接取谷歌返回的id_token字符串(JWT格式,由谷歌签名签发,无法伪造)
  • 前端将id_token传给后端,两种方式按需选:
    1. 要页面跳转就构造隐藏表单POST提交,把id_token作为表单字段
    2. 要无刷新登录就用fetch/axios异步POST请求发送
  • 后端Servlet对应POST接口拿到id_token后,用谷歌官方提供的Java客户端库校验token合法性,校验通过后可以直接拿到谷歌返回的可信用户邮箱、姓名、头像等信息
  • 校验通过后调用request.getSession(true)创建新的HttpSession,将用户信息存入Session属性中,后续接口直接从Session取用户身份即可
  • 最后根据前端传参方式返回响应:表单提交就重定向到登录后首页,异步请求就返回JSON格式的登录成功状态

临时测试快速实现方案

如果只是做Demo不考虑安全问题,你原本的方案是可以跑通的:前端构造表单把邮箱、姓名作为字段POST到Servlet,后端用request.getParameter()拿到对应参数,直接创建Session存信息就行,能快速看到效果。

Tomcat 10 适配注意点

Tomcat 10 已将Java EE API迁移到Jakarta EE,所有Servlet相关的导入包要换成jakarta.servlet.*,不要用旧的javax.servlet.*,HttpSession的操作API和之前版本完全一致,无需额外调整。

内容的提问来源于stack exchange,提问作者TTT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:05