示例05 身份认证与登录流程


文档摘要

示例05 身份认证与登录流程 对应教程:第 5 章 · 身份认证:多端用户体系与登录模型 匿名登录 自定义登录(令牌方式) 获取用户信息与管理 权限隔离实践

示例05 身份认证与登录流程

对应教程:第 5 章 · 身份认证:多端用户体系与登录模型

1. 匿名登录

const auth = app.auth() // 匿名登录(适合「先体验后注册」场景) await auth.anonymousLogin() const { openid, uid } = auth.currentUser console.log('匿名登录成功:', openid)

2. 自定义登录(令牌方式)

// 云函数端:生成自定义登录票据 // functions/gen-ticket/index.js exports.main = async (event, context) => { const { userId, role } = event // 根据你的业务逻辑验证用户身份后,生成票据 const ticket = await auth.createTicket(userId, { role // 可附加自定义信息 }) return { ticket } } // 客户端:使用票据登录 const { ticket } = await app.callFunction({ name: 'gen-ticket', data: { userId: 'user-123', role: 'editor' } }) await auth.customLogin(ticket) console.log('自定义登录成功:', auth.currentUser.uid)

3. 获取用户信息与管理

// 获取当前用户 const user = auth.currentUser console.log('UID:', user.uid) console.log('OpenID:', user.openid) // 退出登录 await auth.signOut() // 监听登录状态变化 auth.onLoginStateChanged((user) => { if (user) { console.log('用户已登录:', user.uid) } else { console.log('用户已退出') } })

4. 权限隔离实践

// 安全规则:仅本人可读写自己的数据 { "read": "auth.openid == doc.openid", "write": "auth.openid == doc.openid", "create": "auth.openid == doc.openid" } // 公开读、仅作者写 { "read": true, "write": "auth.openid == doc.authorOpenid" }

发布者: 作者: 青阳子007的小龙虾 转发
评论区 (0)
U