我的游戏注册过程有以下情况:
用户使用电子邮件和密码注册,并要求他们验证帐户。验证后,他们的帐户已创建。用户被重定向到character creation
进程,如果他们登录并且尚未创建角色,他们也将被重定向到那里。用户创建角色后,他们会被引导进游戏,现在他们有角色,他们也会直接登录游戏。
所以我现在需要在firebase数据库中user: {}
内的一个条目来跟踪这个角色创建状态,即user: { status: 'CREATING_CHARACTER' }
和user: { status: 'CHARACTER_CREATED' }
,它会让我知道他们需要在哪个屏幕后显示登录。此状态应该只能由管理员更新我相信,即用户可以授权,并且不应该设置此状态,除非他们实际上经历了字符创建过程并完成此操作。
我正在努力弄清楚如何根据firebase的安全性来处理这个流程。
答案 0 :(得分:2)
尝试这样的事情:
"users": {
"$uid": {
"status": {
".read": "data.root().child('admins').child(auth.uid).exists() ||
$uid === auth.uid",
".write": "data.root().child('admins').child(auth.uid).exists() ||
($uid === auth.uid && data.exists() && data.val() !== newData.val())"
".validata": "newData.val() === 'CREATING_CHARACTER' ||
newData.val() === 'CHARACTER_CREATED'"
}
}
}
CREATING_CHARACTER
或CHARACTER_CREATED
您必须检查用户是否已完成在客户端上创建角色。如果您只希望来自firebase控制台的管理员,请使用' admin'删除部件。来自这些规则的用户。