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

application server如何识别用户角色?基于web.xml配置的角色存储疑问

容器存储角色信息的逻辑

根据你使用的认证方式不同,存储位置有明显区别:

  • 你示例中使用的是BASIC认证,这种认证本身是无状态设计:
    • 浏览器会将用户输入的用户名、密码做Base64编码后,附加在每一次后续请求的Authorization请求头中发送给服务器
    • 容器不会持久存储用户的角色信息,每次收到请求后都会先解码Authorization头的账号密码,和配置的Realm(你这里用的是数据库Realm)做校验,同时查询对应用户的角色,再判断是否有当前资源的访问权限。查询到的角色信息会临时放在本次请求的HttpServletRequest对象中,请求处理完成后就会销毁。
  • 如果你使用的是FORM表单认证、Digest认证这类会话绑定的认证方式:
    • 容器会在用户首次登录校验通过后,将用户身份、对应角色信息都存储在服务端的HttpSession对象中
    • 后续请求到达时,容器会通过请求携带的JSESSIONID匹配到对应的Session,直接取出存储的角色信息做权限校验,不需要每次都查询数据源。

额外补充:不管用哪种认证方式,校验完成的角色信息都会临时绑定到当前请求的线程上下文里,方便容器在整个请求处理链路中做权限判断,请求处理结束后会自动清除线程上下文的绑定信息,避免容器线程复用时出现身份串用的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:15:03