Firebase是否支持落地页+管理后台+多客户子站点架构?
Firebase适配多子域名多模块架构的可行性分析
Firebase完全能适配你构想的架构,以下针对你的需求逐一说明:
1. 自定义域名及SSL支持
Firebase Hosting支持配置自定义域名与通配符子域名,且会自动提供并管理SSL证书(包括通配符证书),无需手动申请部署,所有子域名都能实现HTTPS访问。
2. 单一代码库多模块部署
可以通过单一代码库整合落地页、管理后台、客户站点三个模块,借助Firebase Hosting的rewrites规则,根据访问的子域名路由到对应模块:
- 针对
www.domain.tld,路由到静态落地页文件目录 - 针对
admin.domain.tld,路由到管理后台的入口文件 - 针对
customer*.domain.tld,路由到客户站点的入口文件
代码内部可通过解析当前域名(如window.location.hostname)判断加载对应模块的路由、组件逻辑,无需拆分多个代码库。
3. ACL权限控制
结合Firebase Auth与Firebase Firestore(或Realtime Database)的安全规则,可实现精细的权限控制:
- 在用户的Auth自定义声明中添加角色(
admin/customer/user),以及客户ID(针对客户和下属用户) - Firestore安全规则中校验用户角色与所属关系:
- 普通用户仅能访问自身ID关联的数据
- 客户用户可访问自身ID及下属用户ID关联的数据
- 管理员用户直接放行所有数据访问请求
示例安全规则(Firestore):
match /databases/{database}/documents { match /users/{userId} { allow read, write: if request.auth != null && ( request.auth.uid == userId || request.auth.token.role == 'customer' && request.auth.token.customerId == resource.data.customerId || request.auth.token.role == 'admin' ); } }
4. 跨子域名无缝认证
Firebase Auth支持跨子域名共享登录状态,只需两步配置:
- 将所有子域名(
www.domain.tld、admin.domain.tld、*.domain.tld)添加到Firebase项目的授权域名列表中 - 启用Firebase Auth的会话cookie模式(或使用
localStorage配合跨域策略),实现登录状态在所有子域名下自动识别,用户无需重复登录
内容的提问来源于stack exchange,提问作者spaxxUnited
相关产品推荐
相关产品推荐

