SilverStripe 访客和权限

SilverStripe visitor and permissions

在 SilverStripe 中,是否有关于用户和他们在登录后可以看到的内容的教程,具体取决于他们的角色和权限?

我希望用户在登录后可以看到更多内容,但不能访问 CMS。

我该怎么做?

有一些关于这个主题的详细教程Silverstripe User Help

感兴趣的是 Managing roles and permissions

在设置组权限中,您可以设置用户是否具有对所有 CMS、部分 CMS 或 none CMS 的权限。

您可以创建一个无法访问CMS,但可以在前端查看额外页面的用户组。为此,在创建新组时,在 Permissions 选项卡上取消 select 所有复选框。

然后你会想要设置一些页面,只有登录会员才能访问。在 CMS select 中,您希望仅供登录会员查看的页面。转到右上角的页面设置选项卡。在此屏幕上,您会看到 谁可以查看此页面?。您可以select登录用户仅这些人(从列表中选择)和select用户组在输入字段中。

您可以通过扩展 MemberLoginForm.

来控制登录用户的去向

首先在mysite/code/CustomLoginForm.php中创建一个CustomLoginFormclass。

CustomLoginForm.php

class CustomLoginForm extends MemberLoginForm  {

    public function dologin($data) {
        if($this->performLogin($data)) {

            // Check if the logging in member has access to the CMS
            if(Permission::check('CMS_ACCESS_CMSMain')) {
                // If they do, send them to the admin page
                $this->logInUserAndRedirect($data);
            }

            // If they don't, redirect them to whatever page you like. 
            // The following redirects the user to the home page
            return Controller::curr()->redirect(Director::baseURL());

        } else {
            if ($badLoginURL = Session::get('BadLoginURL')) {
                return Controller::curr()->redirect($badLoginURL);
            } else {
                return Controller::curr()->redirectBack();  
            }
        }      
    }

}  

在您的 _mysite/config.php 中调用 userCustomClass 函数将 CustomLoginForm 设置为您的 `MemberLoginForm。将以下行添加到您的 _mysite/config.php 文件:

config.php

Object::useCustomClass('MemberLoginForm', 'CustomLoginForm');

您可以自定义它以通过 CMS 控制重定向页面,甚至可以为每个用户组设置。它只需要一点代码来添加它。