我知道有很多方法可以做到这一点,但是当我深思熟虑时,全局禁用该站点可能会很困难。
我想要的是,当用户访问该网站时,无论他们身在何处,他们都将重定向到登录页面。我希望不需要在每个菜单项或页面其他区域中进行特殊设置。
有没有简单的方法可以做到这一点?或执行此操作的超赞插件?到目前为止,我的搜索都是徒劳的。但是,这可能只是我在JED / Google中选择的关键字。
我知道有很多方法可以做到这一点,但是当我深思熟虑时,全局禁用该站点可能会很困难。
我想要的是,当用户访问该网站时,无论他们身在何处,他们都将重定向到登录页面。我希望不需要在每个菜单项或页面其他区域中进行特殊设置。
有没有简单的方法可以做到这一点?或执行此操作的超赞插件?到目前为止,我的搜索都是徒劳的。但是,这可能只是我在JED / Google中选择的关键字。
Answers:
其中一项可行吗?
保持匿名,不要让您的视线从部分或整个网站上移开。(可选)您可以允许访问者直接输入您的网站,而无需输入邀请码。
RegisteredOnly插件仅允许注册用户访问Joomla网站。
当访客尝试访问任何Joomla内容时,它们将被重定向到登录页面。
1)使用Joomla!的内置ACL
我建议您将访问者默认为登录页面,并使用Joomla!的内置ACL(已注册用户)。
将顶级菜单项设置为已注册用户的权限-然后该树上的每个菜单项将仅对注册用户可见并且可用。
但是,未注册的用户仍然可以下载文件和文档(即如果他们具有直接链接)。
在这种情况下,如果您想保护那些文档,例如Akeeba Release Systems或SobiPro,则必须使用第三方扩展。
2)受密码保护的目录
保护您网站的最简单方法是通过.htaccess /
它不雅致,但是例如,如果您使用cPanel,请转到“安全性”->“密码保护目录”,然后使用向导命名目录,添加或删除用户并将这些用户分配到“密码保护目录”中,您可以为每个用户指定一个唯一的名称和密码。
它不雅致,但简单易用,并且在实践中经常使用-但是,我重申,它最好使用ACL,并且如果要保护文档免于下载,则应使用第三方扩展。
如果将文件/文档保留在“受密码保护”目录下,那么这些文件/文档也将受到保护-要求具有权限的用户尝试访问该目录才能首先登录。
我将基于@Bryan的答案给出我的答案。
该只限插件看起来非常有前途,所以没有对此有何评论。
该registeredOnly插件是免费的,但我没有与代码印象深刻,所以我把分叉并重新写它和删除已过时的代码的自由。
除此之外,我还删除了Community Builder支持,因为........我讨厌Community Builder:
defined('_JEXEC') or die('Restricted access');
class plgSystemRegisteredonly extends JPlugin
{
public function onAfterRoute()
{
$app = JFactory::getApplication('site');
$input = $app->input;
$user = JFactory::getUser();
// Do nothing if in backend or user is logged in
if ($app->isAdmin() || !$user->guest)
{
return;
}
// Get the component, view and task
$option = $input->get('option');
$view = $input->get('view');
$task = $input->get('task');
// If user is logging, registering or requesting user/pass, dont redirect
if (($option == 'com_users') && (($task == 'login') || ($task == 'register_save') || ($task = 'remindusername') || ($task == 'requestreset')))
{
return;
}
// If user is at login form, registering or recovering user/password, dont redirect
if (($option == 'com_users') && (($view == 'login') || ($view == 'reset') || ($view == 'remind') || ($view == 'register')))
{
return;
}
$app->redirect(JUri::base() . 'index.php?option=com_users&view=login', 'You must be logged in to access this site');
}
}
也将其放在Github上:https : //github.com/Joomla-StackExchange/registeredOnly
希望对您有所帮助
您可以将所有菜单链接的权限设置为已注册,从而强制用户登录。
$haystack= JURI::current();
$needle = '/login';
$is_login_page = $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== FALSE);
if(JFactory::getUser()->guest && !$is_login_page && $_SERVER['HTTP_HOST'] != 'vauler.com' && $_SERVER['HTTP_HOST'] != '127.0.0.1:92')
$app->redirect('index.php/login');
将此代码粘贴到当前模板的index.php文件中