我正在使用NodeJS Express API设置Firebase Admin SDK。
我添加了一个端点,该端点使我可以创建用户-
route.post('/create', (req, res) => {
const { email, password } = req.body
fbseAdmin.auth().createUser({ email, password })
.then((userRecord) => {
res.status(200).json({ userRecord })
})
})
但是我想做的是确保用户具有角色,以便我可以对某些服务进行授权检查。
我不知道如何实现这一目标?我在想也许我要向实时数据库添加一个条目,例如-
users/uid/roles/<role name>: true
但是我不确定我是否缺少某些东西。另外,如果是这种情况,而我确实需要这样做,我是否可以这样做-
route.post('/create', (req, res) => {
const { email, password } = req.body
fbseAdmin.auth().createUser({ email, password })
.then((userRecord) => {
fbseAdmin.database()
.ref('users')
.child(`${userRecord.uid}/roles`)
.set({
admin: true
})
res.status(200).json({ userRecord })
})
})
至少可以说这有点脆弱。
此外,由于该条目不是用户对象的一部分,因此我每次需要验证时都需要在实时数据库中查找?正确吗?
答案 0 :(得分:2)
您应该查看如何设置custom claim against a user。
route.post('/create', (req, res) => {
const { email, password } = req.body
fbseAdmin.auth().createUser({ email, password })
.then((userRecord) => {
fbseAdmin.auth().setCustomUserClaims(userRecord.uid, { admin: true })
.then(() => {
res.status(200).json({ userRecord })
})
})
})