You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google App Maker中按用户角色安全保护记录特定字段

基于用户角色保护Google App Maker中记录的特定字段

你提的这个问题太关键了——UI层面隐藏字段只是“表面功夫”,有心之人随便抓个请求就能拿到敏感数据,真正的安全必须从服务器端入手。在Google App Maker里,完全可以实现基于角色的字段级权限管控,给你两个靠谱的方案:

方案一:服务器端脚本过滤字段(最可靠)

这是最根本的解决办法,通过重写模型的服务器脚本,在数据返回给客户端之前就把敏感字段删掉,从根源上杜绝泄露。

步骤如下:

  1. 打开你的Employee模型,切换到服务器脚本标签页
  2. 重写get和query函数,根据当前用户角色过滤salary字段:
// 处理单条记录的获取请求
function get(record) {
  // 获取当前登录用户的所有角色
  const userRoles = app.metadata.getUserRoles();
  
  // 仅管理员能看到salary字段,其他角色删除该字段
  if (!userRoles.includes('Admin')) {
    delete record.salary;
  }
  
  return record;
}

// 处理多条记录的查询请求
function query(query) {
  // 先执行原始查询拿到所有记录
  const records = query.run();
  const userRoles = app.metadata.getUserRoles();
  
  // 非管理员用户的记录中移除salary字段
  if (!userRoles.includes('Admin')) {
    records.forEach(record => {
      delete record.salary;
    });
  }
  
  return records;
}

这样一来,普通用户的请求响应里根本不会出现salary字段,就算抓包也拿不到数据。

方案二:结合模型视图与权限设置(更便捷)

App Maker支持给模型创建不同的视图(包含特定字段),再给不同角色分配对应视图,实现字段级的访问控制:

  1. 给Employee模型创建两个视图:
    • 普通用户视图:只包含name、surname、email三个字段
    • 管理员视图:包含所有四个字段(包括salary)
  2. 进入模型的权限设置页面,给普通用户角色分配「普通用户视图」,给管理员角色分配「管理员视图」
  3. 确保UI组件绑定数据源时,使用模型的默认视图(App Maker会自动根据用户角色匹配对应的视图)

额外提醒

  • 视图方案虽然便捷,但建议和服务器脚本过滤配合使用——因为视图权限在极端情况下可能被绕过,服务器脚本是更底层的安全保障
  • 绝对不要依赖客户端脚本过滤字段!客户端代码可以被轻易篡改,完全没有安全性可言
  • 如果涉及敏感字段的修改(比如更新salary),还要在服务器脚本的create、update函数里添加角色校验,确保只有管理员能操作这些字段

内容的提问来源于stack exchange,提问作者Christina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:08:08