基于@nuxtjs/auth-next的nuxt.js鉴权页面实际安全性实现原理是怎样的?
@nuxtjs/auth-next 受auth中间件保护页面的安全实现逻辑
- 前置拦截逻辑:
middleware: ["auth"]配置的中间件会在对应页面组件渲染前优先执行,无论你的Nuxt应用是SSR、SSG还是纯CSR模式,这个拦截逻辑都会在页面内容加载到客户端之前触发。 - 认证状态校验:中间件执行时会调用
@nuxtjs/auth-next内置的状态校验逻辑,检查本地存储(或Cookie、Session等存储介质)中是否存在有效认证凭证、用户认证状态是否为已登录:- 如果校验为未认证状态,会直接拦截当前请求,自动跳转到登录页,不会加载任何受保护页面的组件代码和业务内容
- 如果校验为已认证状态,才会放行进入页面渲染流程
- 服务端渲染场景的额外防护:如果应用开启SSR模式,auth中间件会在服务端先执行,服务端会直接校验请求携带的认证凭证(通常存在Cookie中),凭证无效时服务端直接返回302跳转响应,根本不会把受保护页面的源码和数据返回给客户端,避免敏感页面内容泄露。
- 接口层面的二次校验:就算极端情况下客户端被恶意篡改绕过了前端中间件校验,
@nuxtjs/auth-next会自动给所有业务请求携带认证凭证(通常是Authorization请求头),后端服务会对所有敏感接口的凭证做合法性校验,凭证无效直接返回401状态,此时前端就算强行打开页面也无法获取到任何敏感业务数据。 - 状态过期自动处理:中间件每次执行时也会同步校验凭证的有效期,一旦发现token过期,会自动清除本地无效的认证信息,跳转登录页重新认证。
内容的提问来源于stack exchange,提问作者user16799703
相关产品推荐
相关产品推荐

