【发布时间】:2016-07-25 14:46:04
【问题描述】:
默认使用Model Admin来管理一个model/s,如果跳过这个model会报错。
/* private static $managed_models = array(
'OneModel'
); */
我想先显示一个简单的表单(密码和操作按钮的文本字段),然后如果密码正确,它应该转到网格字段。
我尝试更改模型内的 getCMSfields,但只有当我单击网格字段中的一条记录时,该字段才可见:
public function getCMSfields(){
$fields = FieldList::create(TabSet::create('Root', $login = Tab::create('Authorise',
TextField::create('Password')
)));
return $fields;
}
编辑:
此二级密码是解密该 DataObject 数据的密钥,不是常规登录,因此它是保护某些敏感数据安全的一种附加安全方法。
【问题讨论】:
-
我建议不要在 CMS 中使用登录表单。我建议使用 SilverStripe 身份验证和权限功能来控制用户是否可以查看此部分。是否有理由在 CMS 中使用额外的登录表单而不是 SilverStripe 的安全功能?
-
绝对!如果用户有权查看或编辑特定的 DataObject,他为什么要重新登录?您可以覆盖模型中的 can* 方法,如 canCreate()、canView()、canEdit() 和 canDelete(),并使用 PermissionProvider 向成员组添加全局权限。见docs.silverstripe.org/en/3.3/developer_guides/model/permissions 和docs.silverstripe.org/en/3.3/developer_guides/security/…
-
我完全同意上述观点 - 权限应该决定用户可以看到或看不到的内容 - 我不会在已经有登录名的系统中创建登录名
-
恐怕我理解错了。来自此数据对象的数据存储在第二个数据库中,该数据库已加密,并且此密码/密钥与存储在服务器某处的加密密钥进行比较。所以这不是登录。只是为了保护敏感数据的安全而增加的一种安全方法。
-
我仍然看不出在 CMS 中使用额外密码表单的原因。为什么不在 CMS 中设置权限,允许某些用户访问数据,而不是其他用户?让用户输入第二个密码屏幕是一种糟糕的用户体验,它不会使系统更加安全。
标签: php silverstripe