尝试设置权限,以便只有特定的一组用户才能访问前端的某些页面。他们根本不需要CMS访问。
我已经关注了Silverstripe上的permissions guide,但我不确定如何指定特定的组只能查看特定页面。
这会拒绝除管理员以外的所有人访问:
public function init() {
parent::init();
if(!Permission::check("VIEW_SITE")) Security::permissionFailure();
}
public function providePermissions() {
return array(
"VIEW_SITE" => "Access the site",
);
}
答案 0 :(得分:4)
要根据他们所在的Group
限制访问某些网页,您可以在模型的Member::inGroup
功能中使用canView
,如下所示:< / p>
public function canView($member = null) {
if (!$member) {
$member = Member::currentUser();
}
return Permission::check('ADMIN') || ($member && $member->inGroup('MyGroup'));
}
或控制器的init
功能如下:
public function init()
{
parent:init();
$member = Member::currentUser();
$canView = Permission::check('ADMIN') || ($member && $member->inGroup('MyGroup'));
if (!$canView) {
Security::permissionFailure();
}
}
通过为特定网页创建特定的Permission
,我们也可以使用Permission
(如您的问题中)。例如VIEW_ACCOUNT_PAGE
用于帐户页面,然后将此Permission
应用于您希望有权访问帐户页面的所有Group
(在安全性下的CMS中 - &gt;网上论坛 - &gt ;组X - &gt;权限)。然后,您可以限制访问:
# In AccountPage_Controller
public function init()
{
parent:init();
$canView = Permission::check('ADMIN') || Permission::check('VIEW_ACCOUNT_PAGE');
if (!$canView) {
Security::permissionFailure();
}
}
public function providePermissions()
{
return [
'VIEW_ACCOUNT_PAGE' => 'View account page',
];
}