Content management system silverstripe外部身份验证

Content management system silverstripe外部身份验证,content-management-system,silverstripe,Content Management System,Silverstripe,有一个自定义的登录表单,应该允许用户访问同一页面上的某些内容。到目前为止,这适用于存储为SS数据库中的成员的用户,我在登录后检查该用户在Page类中是否具有如下权限: function isAllowed() { if (Member::currentUser()) { $PresseGroup = DataObject::get_one('Group', "Code = 'presse'"); $AdminGroup = DataObject::get_

有一个自定义的登录表单,应该允许用户访问同一页面上的某些内容。到目前为止,这适用于存储为SS数据库中的成员的用户,我在登录后检查该用户在Page类中是否具有如下权限:

function isAllowed() {
    if (Member::currentUser()) {
        $PresseGroup = DataObject::get_one('Group', "Code = 'presse'");
        $AdminGroup = DataObject::get_one('Group', "Code = 'administrators'");
        if (Member::currentUser()->inGroup($PresseGroup->ID) || Member::currentUser()->inGroup($AdminGroup->ID)) {
            return true;
        }
    }
}
在模板中,我刚刚做了以下操作:

<% if isAllowed %>  
SecretContent
<% end_if %>
我希望有人能帮我解决这个-我知道非常具体的-问题。 许多人,
Florian

在SilverStripe中,您可以创建自定义身份验证程序,这意味着用户可以使用存储在其他地方的帐户登录您的网站,甚至只需硬编码的用户和密码。 您可以查看示例代码,了解如何执行此操作

但对于您的任务来说,这甚至可能是一个复杂的解决方案,在登录后只需执行类似于
Session::set('isAllowed',true)的操作就可以了并检查是否允许用户查看:

function isAllowed() {
    if (Member::currentUser()) {
        $PresseGroup = DataObject::get_one('Group', "Code = 'presse'");
        $AdminGroup = DataObject::get_one('Group', "Code = 'administrators'");
        if (Member::currentUser()->inGroup($PresseGroup->ID) || Member::currentUser()->inGroup($AdminGroup->ID)) {
            return true;
        }
    }
    // if Member::currentUser() is not allowed to view, 
    // return the session, which is either set to true or it returns null if not set 
    return Session::get('isAllowed');
}
function isAllowed() {
    if (Member::currentUser()) {
        $PresseGroup = DataObject::get_one('Group', "Code = 'presse'");
        $AdminGroup = DataObject::get_one('Group', "Code = 'administrators'");
        if (Member::currentUser()->inGroup($PresseGroup->ID) || Member::currentUser()->inGroup($AdminGroup->ID)) {
            return true;
        }
    }
    // if Member::currentUser() is not allowed to view, 
    // return the session, which is either set to true or it returns null if not set 
    return Session::get('isAllowed');
}