3

如何在 Joomla 3 中禁用前端登录组件?

我已经设法通过禁止注册来禁用前端用户注册,如下所示。

在此处输入图像描述

但仍然可以通过以下网址访问登录表单

index.php?option=com_users&view=login

如何在不编辑核心文件的情况下禁用前端登录组件?

鉴于我已经经历了下面。我不想使用 RewriteRule 来完成它。我想向用户显示它已禁用的消息。

joomla 3 - 如何禁用前端登录组件?

4

4 回答 4

1

试试这个,

Joomla 默认登录模块受到保护。所以你不能从管理员端编辑/禁用它。

只需检查extensions-> extension manager -> Search for login

然后将显示该模块。但你不能让它禁用。因此,在不触及核心文件的情况下覆盖此功能的解决方案是模板覆盖。

您可以简单地index.php?option=com_users&view=login在模板中覆盖此视图。

通过数据库表编辑受保护的扩展

扩展无法编辑,但您可以通过打开或关闭来管理它。受保护,意味着这个扩展不能被管理,否则它会破坏你网站的结构。但是,如果您希望将扩展程序带入解锁状态,您可以访问您的数据库(在我的情况下是由 phpMyAdmin 编辑的 MySQL),找到可靠的结构表,找到所需的字符串,并将“状态”从“1”更改为“0” . 通常您的主机会为您提供一些数据库管理工具。

希望能帮助到你..

于 2014-06-25T05:21:16.720 回答
1

我为此写了一个插件。它完全禁用了前端的“用户”。您还可以仅为这些禁用特定视图:

index.php?option=com_users&view=login
index.php?option=com_users&view=registration
index.php?option=com_users&view=profile&layout=edit

这是在前端完全禁用用户的代码

<?php defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Router\Route;

class PlgSystemCobizDisableLogin extends CMSPlugin
{   
    public function onAfterInitialise()
    {   
        $this->disableLogin();
    }
    
    protected function disableLogin()
    {
        $app = Factory::getApplication();
        if ($app->isClient('site') === false) return;

        $disable_users = $this->params->get('disable_users', 1);
        if (!$disable_users) return;

        $option  = $app->input->getCmd('option');       
        if ($option == 'com_users') {           
            $this->redirect();        
        }
    }
    
    protected function redirect()
    {
        $Itemid = $this->getHomePageItemid();
        $app = Factory::getApplication();
        $link = Route::_('index.php?Itemid=' . $Itemid);
        Factory::getApplication()->enqueueMessage('Toegang gewijgerd', 'error');
        $app->redirect($link);      
    }
    
    protected function getHomePageItemid()
    {
        $tableName = '#__menu';
        $db = Factory::getDbo();
        $query = $db->getQuery(true);
        $query->select('id');
        $query->from($db->quoteName($tableName));
        $query->where($db->quoteName('published') . ' = ' . $db->quote(1));
        $query->where($db->quoteName('home') . ' = ' . $db->quote(1));
        $db->setQuery($query);
        $data = $db->loadResult();
        return $data;
    }
}

还是我在这里忽略了什么?我承认这也会禁用前端用户的注册。但在大多数情况下,这也是我想要的!:-)

于 2021-03-24T15:14:13.397 回答
0

在 joomla 3.x 中,我发现一个简单的方法是编辑 /components/com-users/controller.php 并像这样标记视图字符串登录。我得到了 404 服务器响应,但这就是我想要的。因为这不是一个 url,而是一个组件视图,所以很难重定向。

// Set the default view name and format from the Request.

    // $vName   = $this->input->getCmd('view', 'login');
     $vFormat = $document->getType();
于 2019-07-05T15:35:39.627 回答
0

如果你想避免 404 服务器响应,在编辑 /components/com-users/controller.php 后,如前面的评论所示,你可以创建一个重定向,从前端登录页面发送到你想要的任何地方,比如主页。它确实有效。

于 2021-02-08T09:16:48.660 回答