我正在使用 subsites 模块来制作多站点系统。
我希望用户登录到网站是独立的。因此,如果用户在一个站点上注册,他们不能只是去另一个子站点并登录 - 他们也必须注册该站点。
换句话说 - 每个子站点上的注册是完全独立的。
这可能吗?
我正在使用 subsites 模块来制作多站点系统。
我希望用户登录到网站是独立的。因此,如果用户在一个站点上注册,他们不能只是去另一个子站点并登录 - 他们也必须注册该站点。
换句话说 - 每个子站点上的注册是完全独立的。
这可能吗?
从技术上讲,可以为 Member 类编写一个 DataObjectDecorator,并为每个成员添加一个 SubsiteID,然后使用 argumentSQL() 为该 SubsiteID 添加一个过滤器。
并且您需要修改注册表以考虑 SubsiteID 并挂钩到身份验证器。
但很可能还有其他几点需要您了解才能使其正常工作。
所以是的,这应该是可能的,但这需要很长时间,而且要让它正常工作会很痛苦。
你应该仔细考虑如果你真的需要它那么糟糕,你需要这样做。
应该可以通过使用组和设置组权限来解决这个问题。
我知道这是一个很老的线程,但如果有人偶然发现这个线程,它会很有用。对此还有另一个技巧。
/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
做到了。)。如果用户不属于当前站点,则他们将被注销,然后重定向到登录页面。
描述说(除其他外):
如果您没有共同的“总部”,我不确定该模块是否适合您。与其破解模块来做一些它不打算做的事情,为什么不进行单独的安装呢?