1

我正在使用 subsites 模块来制作多站点系统。

我希望用户登录到网站是独立的。因此,如果用户在一个站点上注册,他们不能只是去另一个子站点并登录 - 他们也必须注册该站点。

换句话说 - 每个子站点上的注册是完全独立的。

这可能吗?

4

3 回答 3

2

从技术上讲,可以为 Member 类编写一个 DataObjectDecorator,并为每个成员添加一个 SubsiteID,然后使用 argumentSQL() 为该 SubsiteID 添加一个过滤器。
并且您需要修改注册表以考虑 SubsiteID 并挂钩到身份验证器。
但很可能还有其他几点需要您了解才能使其正常工作。

所以是的,这应该是可能的,但这需要很长时间,而且要让它正常工作会很痛苦。

你应该仔细考虑如果你真的需要它那么糟糕,你需要这样做。
应该可以通过使用组和设置组权限来解决这个问题。

于 2012-08-21T16:30:00.450 回答
1

我知道这是一个很老的线程,但如果有人偶然发现这个线程,它会很有用。对此还有另一个技巧。

/mysite/extensions/CustomLeftAndMain.php

<?php
class CustomLeftAndMain extends Extension {

    public function onAfterInit() {

        self::handleUser();

    }



    public static function handleUser(){
        $currentSubsiteID = Subsite::currentSubsiteID();

        $member =  Member::currentUser();
        $memberBelongsToSubsite =  $member->SubsiteID; 

        if($memberBelongsToSubsite>0 && $currentSubsiteID!=$memberBelongsToSubsite){
            Security::logout(false);
            Controller::curr()->redirect("/Security/login/?_c=1001");
        }
    }


}

/mysite/_config.php添加一个扩展

LeftAndMain::add_extension('CustomLeftAndMain');

以上代码的基本作用是,无论用户属于哪个子站点,系统都允许用户登录。并且只要启动应用程序,登录的用户是否属于当前网站(方法handleUser做到了。)。如果用户不属于当前站点,则他们将被注销,然后重定向到登录页面。

于 2016-08-09T09:55:47.103 回答
0

描述说(除其他外):

  • “子网站模块允许多个网站从一个 SilverStripe 安装运行,并在它们之间共享用户、内容和资产。”
  • “分支机构可以有单独的用户/管理员,以及个人信息。”

如果您没有共同的“总部”,我不确定该模块是否适合您。与其破解模块来做一些它不打算做的事情,为什么不进行单独的安装呢?

于 2011-09-22T10:28:53.800 回答