Permissions Silverstripe-设置前端页面的权限

Permissions Silverstripe-设置前端页面的权限,permissions,silverstripe,Permissions,Silverstripe,正在尝试设置权限,以便只有特定的用户组可以访问前端的特定页面。他们根本不需要CMS访问 我已经在Silverstripe上使用了,但是我不知道如何分配一个特定的组来只查看特定的页面 这将拒绝访问除管理员以外的所有人: public function init() { parent::init(); if(!Permission::check("VIEW_SITE")) Security::permissionFailure(); } public function providePermiss

正在尝试设置权限,以便只有特定的用户组可以访问前端的特定页面。他们根本不需要CMS访问

我已经在Silverstripe上使用了,但是我不知道如何分配一个特定的组来只查看特定的页面

这将拒绝访问除管理员以外的所有人:

public function init() {
parent::init();
if(!Permission::check("VIEW_SITE")) Security::permissionFailure();
}

public function providePermissions() {
return array(
  "VIEW_SITE" => "Access the site",
);
}

要根据某些页面所属的
组限制对其的访问,您可以在模型的
canView
函数中使用
Member::inGroup
,如下所示:

公共函数canView($member=null){
如果(!$member){
$member=member::currentUser();
}
返回权限::check('ADMIN')| |($member&&$member->inGroup('MyGroup'));
}
或者在控制器的
init
函数中,如下所示:

public function init()
{
父项:init();
$member=member::currentUser();
$canView=Permission::check('ADMIN')| |($member&&$member->inGroup('MyGroup'));
如果(!$canView){
安全::permissionFailure();
}
}
通过为特定页面创建特定的
Permission
s,使用
Permission
s(如您的问题中所述)也是可能的,而且可能更可取。例如,
查看账户页面
,然后将此
权限
应用于您想要访问账户页面的所有
(在CMS中的安全->组->组X->权限下)。然后,您可以按以下方式限制访问:

#在AccountPage#U控制器中
公共函数init()
{
父项:init();
$canView=Permission::check('ADMIN')| | Permission::check('VIEW_ACCOUNT_PAGE');
如果(!$canView){
安全::permissionFailure();
}
}
公共职能部门
{
返回[
“查看账户页面”=>“查看账户页面”,
];
}

要根据某些页面所在的
组限制对这些页面的访问,您可以在模型的
canView
函数中使用
成员::inGroup
,如下所示:

公共函数canView($member=null){
如果(!$member){
$member=member::currentUser();
}
返回权限::check('ADMIN')| |($member&&$member->inGroup('MyGroup'));
}
或者在控制器的
init
函数中,如下所示:

public function init()
{
父项:init();
$member=member::currentUser();
$canView=Permission::check('ADMIN')| |($member&&$member->inGroup('MyGroup'));
如果(!$canView){
安全::permissionFailure();
}
}
通过为特定页面创建特定的
Permission
s,使用
Permission
s(如您的问题中所述)也是可能的,而且可能更可取。例如,
查看账户页面
,然后将此
权限
应用于您想要访问账户页面的所有
(在CMS中的安全->组->组X->权限下)。然后,您可以按以下方式限制访问:

#在AccountPage#U控制器中
公共函数init()
{
父项:init();
$canView=Permission::check('ADMIN')| | Permission::check('VIEW_ACCOUNT_PAGE');
如果(!$canView){
安全::permissionFailure();
}
}
公共职能部门
{
返回[
“查看账户页面”=>“查看账户页面”,
];
}

对不起,我忘了提到我正在使用站点的路由。所以我只是在使用控制器。你可以在控制器的
init
函数中放置相同的逻辑。我用一个例子更新了我的答案。非常好的答案!对不起,我忘了提到我正在使用我的站点的路由。所以我只是在使用控制器。你可以在控制器的
init
函数中放置相同的逻辑。我用一个例子更新了我的答案。非常好的答案!