如何在 Parse-Server 中实现“protectedFields”?
Posted
技术标签:
【中文标题】如何在 Parse-Server 中实现“protectedFields”?【英文标题】:How to implement `protectedFields` in Parse-Server? 【发布时间】:2019-05-27 04:01:55 【问题描述】:我相信这是 Parse-Server 中的一个新功能。
默认情况下,User
类的email
字段被视为受保护字段,这意味着默认情况下email
设置为read: false, write: false
以公开。但是,User
类中的所有其他字段都设置为 read: true, write: false
在 Github 中,我看到了这个例子:
export type ClassLevelPermissions =
find?: [string]: boolean ,
count?: [string]: boolean ,
get?: [string]: boolean ,
create?: [string]: boolean ,
update?: [string]: boolean ,
delete?: [string]: boolean ,
addField?: [string]: boolean ,
readUserFields?: string[],
writeUserFields?: string[],
// new feature
protectedFields?: [string]: boolean
;
例如,对于 _User 类,如果使用 userSensitiveFields: ['email', 'sin', 'phone'] 初始化服务器,这将等效于:
// CLP for the class ... other
protectedFields: "*": ["email", "sin"]
;
现在,如果您希望版主角色能够看到用户的电子邮件,但不能看到罪孽和可以阅读所有内容的管理员
protectedFields:
"*": ["email", "sin"],
"role:moderator": ["sin"],
"role:admin": []
;
看到这个例子后,我仍然很困惑到底在哪里实现protectedFields
。我是否在我的应用程序的index.js
或main.js
等中实现它?有人可以给我一个如何设置字段的示例:phoneNum
具有类似于email
的默认值的protectedField
?
【问题讨论】:
【参考方案1】:它是解析服务器初始化中的一个选项。在此处查看 protectedField 选项: http://parseplatform.org/parse-server/api/master/ParseServerOptions.html
我不确切知道您在哪里/如何运行 Parse 服务器,但它应该是这样的:
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var app = express();
var api = new ParseServer(
databaseURI: 'mongodb://localhost:27017/dev',
cloud: '/home/myApp/cloud/main.js',
appId: 'myAppId',
masterKey: 'myMasterKey',
fileKey: 'optionalFileKey',
serverURL: 'http://localhost:1337/parse'
protectedFields:
_User:
"*": ["email", "sin"],
"role:moderator": ["sin"],
"role:admin": []
);
app.use('/parse', api);
app.listen(1337, function()
console.log('parse-server-example running on port 1337.');
);
【讨论】:
Macedo 实现protectedFields: "*": ["email", "phone"]
后,其他用户仍然可以读取电话字段。我错过了什么吗?
试试 _User: '*': ['email', 'phone']
。我会更新答案。
太棒了!我还有一个问题。我可以使用protectedFields
撤销用户更改自己的字段的写入权限吗?
我会尝试在 beforeSave 触发器中执行此操作。以上是关于如何在 Parse-Server 中实现“protectedFields”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 python 中使用 sparql、rdflib 询问本体
Parse-Server后台搭建与使用进阶篇(二)- Parse-server常见问题及解决方法
如何在Castle.Core中实现IProxyGenerationHook的类中实现Equals和GetHashCode的覆盖方法?
parse-server:如何区分用户类 BeforeSave 中的 signUp 和常规 ParseUser.save?