示例05 身份认证与登录流程 对应教程:第 5 章 · 身份认证:多端用户体系与登录模型 匿名登录 自定义登录(令牌方式) 获取用户信息与管理 权限隔离实践
对应教程:第 5 章 · 身份认证:多端用户体系与登录模型
const auth = app.auth() // 匿名登录(适合「先体验后注册」场景) await auth.anonymousLogin() const { openid, uid } = auth.currentUser console.log('匿名登录成功:', openid)
// 云函数端:生成自定义登录票据 // 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)
// 获取当前用户 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('用户已退出') } })
// 安全规则:仅本人可读写自己的数据 { "read": "auth.openid == doc.openid", "write": "auth.openid == doc.openid", "create": "auth.openid == doc.openid" } // 公开读、仅作者写 { "read": true, "write": "auth.openid == doc.authorOpenid" }