← [ BACK_TO_NOTES ]

Auth.js

Auth.js 是面向现代 Web 框架的开源认证库;在 Next.js 中集中配置 Provider、Session 与认证处理器,并暴露 auth()/handlers 等服务端集成入口。

#resource #growing #security #backend #react

[!info] related notes

  • 相关主题:
  • 相关 MOC:
  • 相关 howto:

Auth.js

这是什么

Auth.js 是一个认证库,不是“授权系统”本身。它主要帮应用处理:

  • OAuth / OIDC 等登录 Provider
  • Credentials 等自定义认证入口
  • Session 生命周期
  • Cookie / token 处理
  • 认证 Route Handler 集成
  • 服务端读取当前登录身份
  • 登录 / 登出等认证流程

在 Next.js 中,常见核心配置类似:

import NextAuth from 'next-auth'

export const { auth, handlers, signIn, signOut } = NextAuth({
  providers: [/* ... */],
})

然后认证 HTTP 入口通常由 App Router Route Handler 暴露。

Auth.js 解决什么,不解决什么

Auth.js
→ Authentication plumbing
→ Session plumbing
→ Provider integration

Application Service / Policy
→ Resource Authorization
→ Ownership
→ Domain permission

因此:

const session = await auth()

只说明“当前请求关联到了某个已认证身份”,并不能证明:

这个用户可以修改 goal:123

对象级权限仍然需要业务查询与 policy 判断。

Provider 是什么

Provider 描述用户如何证明身份,例如:

GitHub / Google / OIDC
→ 第三方身份提供商

Credentials
→ 应用自己收 username/email/password
→ 自己负责验证 credentials

使用 Credentials Provider 时,Auth.js 不会神奇地替你设计密码策略、用户表、密码 hash、锁定策略或注册流程;这些仍属于应用业务与安全设计。

Session 是什么

Auth.js 可以让后续请求重新得到当前身份上下文。

在学习时要继续区分:

Session
→ 跨请求保存认证状态

Cookie
→ 浏览器传输/保存凭证的一种载体

JWT
→ Token 的一种结构格式

Authorization
→ 是否允许访问具体资源

不要把它们当成同一个概念。

auth() 的角色

在 Server Component、Server Action、Route Handler 等服务器环境中,可以读取当前认证上下文:

Incoming request
→ session credential
→ Auth.js
→ auth()
→ current identity/session

这个结果适合作为后续授权判断的身份输入。

Client Session 的角色

交互型 Client Component 可能需要客户端 session state,例如控制导航栏头像、登录按钮等。

这类客户端 session 主要服务 UI convenience,不应成为敏感业务操作的最终 trust boundary:

Client says logged in
≠ server authorization proof

Auth.js 与自建认证

可以自建完整认证链,但会涉及:

  • 密码 hash
  • OAuth/OIDC details
  • CSRF/cookie/security
  • Session lifecycle
  • rotation / expiry
  • callbacks / provider edge cases

认证库的价值主要是降低这些协议与生命周期样板成本,而不是消除应用自己的 authorization 和 user-domain 设计。

最短记忆

Auth.js = auth/session framework integration
Auth.js ≠ domain authorization engine
Session exists ≠ owns resource
Credentials Provider ≠ registration system
Client session ≠ trusted authorization result
创建于 2026/9/16 更新于 2026/9/16
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本