首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Joomla 3中禁用前端登录组件?

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

Stack Overflow用户
提问于 2014-06-25 05:06:16
回答 4查看 12.2K关注 0票数 3

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

我已经设法禁用前端用户注册,不允许注册如下。

但是登录表单仍然可以通过下面的url访问。

代码语言:javascript
复制
index.php?option=com_users&view=login

如何禁用前端登录组件而不编辑核心文件?

既然我已经经历了下面的事。我不想用RewriteRule来完成它。我想向用户显示它已被禁用的消息。

joomla 3 - how to disable front end login component?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-25 05:21:16

尝尝这个,

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

只要检查一下extensions-> extension manager -> Search for login

然后这个模块就会显示。但你不能让它失效。因此,在不接触核心文件的情况下覆盖此功能的解决方案是模板覆盖。

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

通过DB表编辑受保护的扩展

扩展不能被编辑,但是您可以通过打开或关闭它来管理它。受保护,意味着这个扩展不能被管理,否则它将破坏您的网站的结构。但是,如果希望将扩展带到未锁定状态,则可以访问DB (在我的例子中,MySQL由phpMyAdmin编辑),查找可靠的结构表,查找所需的字符串,并将“状态”从"1“更改为"0”。通常,您的主机为您提供一些DB管理工具。

希望能帮上忙..。

票数 1
EN

Stack Overflow用户

发布于 2021-03-24 15:14:13

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

代码语言:javascript
复制
index.php?option=com_users&view=login
index.php?option=com_users&view=registration
index.php?option=com_users&view=profile&layout=edit

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

代码语言:javascript
复制
<?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;
    }
}

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

票数 1
EN

Stack Overflow用户

发布于 2019-07-05 15:35:39

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

代码语言:javascript
复制
// Set the default view name and format from the Request.

    // $vName   = $this->input->getCmd('view', 'login');
     $vFormat = $document->getType();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24400575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档