我正在开发一个应用程序,其中将有用户在应用程序中具有特定权限,我将在saas模型中提供,我的问题是我是否应该在firebase中为使用我的应用程序的每个公司创建一个项目或者在那里在firebase数据库中控制它的任何方法?
答案 0 :(得分:0)
您必须使用自定义令牌声明才能为用户设置不同的权限。
在您的规则中,您可以设置如下内容:
{
"rules": {
"adminContent": {
".read": "auth.token.premiumAccount === true",
".write": "auth.token.premiumAccount === true",
}
}
}
然后,您可以使用admin node.js sdk为该用户创建一个自定义声明:
admin.auth().createCustomToken(uid, {premiumAccount: true});
然后,您可以在登录后将customToken发送到客户端应用。请确保验证后端的ID令牌,然后验证用户是否符合您的权限要求:
var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider)
.then(function(result) {
// User is signed in. Get ID token.
return result.user.getToken();
})
.then(function(idToken) {
// Send ID token to backend.
$.post(
'/setCustomAttributes',
{
idToken: idToken
},
function(data, status) {
// Check if custom token is returned.
if (status == 'success' && data) {
var json = JSON.parse(data);
if (json && json.customToken) {
// User is eligible for upgrade. Set custom attributes on the user
// via custom token sign-in.
firebase.auth().signInWithCustomToken(json.customToken);
}
}
});
}).catch(function(error) {
console.log(error);
});