为什么 App 不能用 HttpOnly Cookie?

Web 端可以用 HttpOnly Cookie,但 App 端不能用。

所以多端统一登录时,不能只依赖 HttpOnly Cookie,需要 Token 方案兼容两端。

为什么 Web 可以用 HttpOnly Cookie?

因为:

  • 浏览器天然支持 Cookie

  • 浏览器会自动携带 Cookie

  • HttpOnly 能防止 XSS 读取 Token

  • SameSite 能防 CSRF

所以 Web 端用 HttpOnly Cookie 是最安全、最推荐的方式。

为什么 App 不能用 HttpOnly Cookie?

因为:

  • App 没有浏览器 Cookie 机制

  • App 无法自动携带 Cookie

  • App 无法读取 HttpOnly Cookie(因为 JS 也读不到)

  • App 需要自己存储 Token(通常是安全存储,如 Keychain / Keystore)

所以 App 端必须使用:

  • Authorization: Bearer <token>

  • 或者 本地安全存储 + 手动附带 Token

那多端统一登录怎么设计?

你可以这样回答(非常专业):

多端统一登录时,我们通常采用 JWT + 双 Token(Access + Refresh) 的方案。 Web 端把 Token 放在 HttpOnly Cookie 中,App 端把 Token 放在安全存储中,两端都使用同一套 Token 体系,但存储方式不同。

架构如下:

Token 存储方式请求携带方式
WebHttpOnly Cookie浏览器自动携带
App安全存储(Keychain/Keystore)Authorization Header

统一登录的关键点(面试官会继续问)

你可以这样讲:

1. Token 体系统一

  • Access Token:短期有效(15min~2h)

  • Refresh Token:长期有效(7~30 天)

  • 两端都用同一套 Token

2. Web 和 App 的存储方式不同

  • Web:HttpOnly Cookie(防 XSS)

  • App:安全存储(防逆向、Hook)

3. 后端统一验证 Token

  • 不关心 Token 来自 Cookie 还是 Header

  • 只验证签名、过期时间、黑名单等

4. 退出登录 / 强制下线

  • 使用 Redis 黑名单

  • 两端都能立即失效

面试官可能追问:

“那 Web 和 App 怎么同时支持?”

你可以这样回答:

后端提供两种 Token 读取方式:

  • Web:从 Cookie 中读取

  • App:从 Authorization Header 中读取

认证逻辑统一,读取方式不同。

这句话非常加分。

最终总结(你可以直接背)

多端统一登录时,Web 可以用 HttpOnly Cookie,但 App 不能使用 Cookie 机制,因此不能只依赖 HttpOnly Cookie。

我们通常采用 JWT + Access/Refresh Token 的统一认证体系:

  • Web 把 Token 放在 HttpOnly Cookie 中

  • App 把 Token 放在安全存储中

后端统一验证 Token,不关心 Token 来自 Cookie 还是 Header,从而实现多端统一登录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值