我读过消防安全规则文件。我已经通过Firebase(Firebase Auth)实现了身份验证,但我无法理解如何根据每个用户的配置文件在Firebase中正确配置安全规则。
考虑以下数据结构
{
"company": {
"idCompany1": {
"data": {
"address": "",
"companyName": "Company 1",
"logo": "assets/ApliansLogo.png",
"nit": "",
"phone": ""
},
"users": {
"idUser1": {
"idCompany": "idCompany1",
"idUser": "idUser1",
"name": "Charlie",
"profile": "Admin"
},
"idUser2": {
"idCompany": "idCompany1",
"idUser": "idUser2",
"name": "John",
"profile": "Basic"
},
"idUser3": {
"idCompany": "idCompany1",
"idUser": "idUser3",
"name": "Jack",
"profile": "Basic"
}
}
},
"idCompany2": {
"data": {
"address": "",
"companyName": "Company 2",
"logo": "assets/ApliansLogo.png",
"nit": "",
"phone": ""
},
"users": {
"idUser3": {
"idCompany": "idCompany2",
"idUser": "idUser3",
"name": "Jack",
"profile": "Admin"
}
}
}
},
"users": {
"idUser1": {
"data": "user1@test.com",
"empresas": {
"idCompany1": true
}
},
"idUser2": {
"data": "user2@test.com",
"empresas": {
"idCompany1": true
}
},
"idUser3": {
"data": "user3@test.com",
"empresas": {
"idCompany1": true,
"idCompany2": true
}
}
}
}
用户只能在其所属的公司中读取或写入信息(users/$iduser/companis/$idcompany==true)
规则2
只有公司X的管理用户可以让另一个用户访问他的公司,对于该公司,idcompanyx:true是在users/$iduser/companies内的应用程序中创建的。
只有同一个用户或管理员才能在用户中创建或修改用户的数据
我已经阅读了实时数据库规则中的使用条件,但我不确定如何做到这一点。该应用程序的alghoritms处理不同的角色,但我想添加数据库安全层,我不知道如何做到这一点。目前我只配置了:
{
"rules": {
"company" : {
".read": "auth != null",
".write": "auth != null",
}
}
},
"users" : {
"$user_id" : {
".read": "auth != null",
".write": "auth.uid === $user_id"
}
}
如何根据每个用户的身份验证和配置文件配置Firebase安全规则?
Future<EmpresaDatosModel> cargarEmpresaDatosListado(String idCompany) async {
Query resp = db.child('company/$idCompany/data');
resp.onChildAdded.forEach((element) {
final temp = EmpresaDatosModel.fromJson(Map<String,dynamic>.from(element.snapshot.value));
});
await resp.once().then((snapshot) {});
return temp;
}
db.child('company/$idCompany/data')
.update(Map<String, dynamic>.from(_map));
要认识到的最重要的事情是规则不会过滤数据。
这意味着这个读数不适用于您的用例:
Query resp = db.child('company');
resp.onChildAdded.forEach((element) {
...
原因是,这要求用户对/company
具有完全的读取权限,而您的用例不允许这样做。
因此,您似乎不能在当前数据结构上允许您的安全需求。这意味着您可能必须修改您的数据结构以允许您想要的安全模型。这可能意味着在数据库中使用该公司的JSON复制关于谁在该公司的数据。
问题内容: { “rules”: { “users”: { “$uid”:{ //Private whatever under “uid” but Public is exposed “.read”: “auth != null && auth.uid == $uid”, “.write”: “auth != null && auth.uid == $uid”, 我创建这些规则是为了让用户拥有公共
配置文件分为用户级配置和项目级配置。 用户级配置包含用户的环境及 UI 相关的选项,包括: 用户选项 中的所有内容。 扩展工具,包括已配置的扩展列表。 其他工具中的UI相关选项,例如 Target 组件下 站点地图 的选定视图。 项目级配置包含在特定目标应用程序上执行的工作相关的选项,包括: 项目选项中的所有内容。 单个Burp工具中的非UI相关选项,例如 代理 (Proxy) 和 扫描器 (Sc
配置文件(.yml)用于使用Dropwizard(0.9.2-最新版本)开发的rest api。api所需的大部分凭证(如数据库密码、密钥等)都存储在配置文件中。 我们已经根据在dropwizard配置参考中找到的参考中提到的项目实现了大部分内容。 问题很清楚。它有多安全(将这些信息以纯文本形式存储在配置文件中)。)?如果不是,正确的做法是什么?
一、简介 此配置,可设置后台登陆最大失败次数,以防密码被试出。 其它配置相对简单不在详述。 二、功能演示 如图:
第一步是创建我们的Java配置。这个配置在你的应用程序中创建一个springSecurityFilterChain 的Servlet的过滤器,负责所有安全(例如 保护应用程序的URL,验证提交的用户名和密码,重定向到登陆的表单等等)。你可以在下面找到大部分Java配置项的例子: import org.springframework.beans.factory.annotation.Autowire