Firebase Admin SDK 角色
Firebase Admin SDK roles
我正在 NodeJS Express 中设置 Firebase Admin SDK API。
我添加了一个允许我创建用户的端点 -
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 })
})
})
至少可以说这似乎有点脆弱。
另外,由于这个条目不是用户对象的一部分,每次我想验证这个时我都需要在实时数据库中查找吗?对吗?
你应该看看如何设置 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 })
})
})
})
我正在 NodeJS Express 中设置 Firebase Admin SDK API。
我添加了一个允许我创建用户的端点 -
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 })
})
})
至少可以说这似乎有点脆弱。
另外,由于这个条目不是用户对象的一部分,每次我想验证这个时我都需要在实时数据库中查找吗?对吗?
你应该看看如何设置 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 })
})
})
})