如何在身份验证后重定向用户

时间:2013-10-07 12:40:25

标签: joomla joomla2.5 joomla-extensions

我已经在joomla 2.5中成功创建了一个自定义注册页面,并且基于用户类型,我希望在登录后将用户重定向到不同的视图。我怎样才能实现这一目标?我是否需要创建身份验证插件或自定义登录模块?

由于

3 个答案:

答案 0 :(得分:1)

试试这个,

Joomla有一个用于登录的模块,你可以使用它或只是检查 com_users / view /

从您可以使用的任何页面成功登录joomla后重定向

<input type="hidden" name="return" value="<?php echo base64_encode("your return url"); ?>" />

此隐藏字段应在您的登录模块中找到,如下所示。

<form action="<?php echo JRoute::_('index.php?option=com_users&task=user.login'); ?>" method="post">

        <fieldset>
            <?php foreach ($this->form->getFieldset('credentials') as $field): ?>
                <?php if (!$field->hidden): ?>
                    <div class="login-fields"><?php echo $field->label; ?>
                    <?php echo $field->input; ?></div>
                <?php endif; ?>
            <?php endforeach; ?>
            <button type="submit" class="button"><?php echo JText::_('JLOGIN'); ?></button>
            <input type="hidden" name="return" value="<?php echo base64_encode($this->params->get('login_redirect_url',$this->form->getValue('return'))); ?>" />
            <?php echo JHtml::_('form.token'); ?>
        </fieldset>
    </form>

您只需将返回的网址放在隐藏字段中base64_encoded当登录成功时,Joomla会重定向到此网址。

如果您需要在身份验证后重定向,这不是核心文件编辑,这意味着您已经提供了一个应该具有隐藏字段的登录表单,例如return或只是添加它。

在另一种情况下,如果您只想知道重定向选项。

$mainframe = JFactory::getApplication();
$mainframe->redirect("your redirect url",'message' ,'message type');

希望它的帮助...

答案 1 :(得分:1)

非商业性“登录重定向”扩展程序如何:http://extensions.joomla.org/extensions/access-a-security/site-access/login-redirect/15257根据访问级别/用户组或JED中登录重定向类别中的类似扩展名重定向用户登录:http://extensions.joomla.org/extensions/access-a-security/site-access/login-redirect

答案 2 :(得分:0)

3.x

中的简短方法

在Joomla plugins\authentication\cookie\cookie.php

中打开路径

在功能onUserAfterLogin($options)的顶部,

$user   = JFactory::getUser();
        $groups = $user->get('groups');

            if(in_array(10, $groups)) 
            {
             $url = JRoute::_('index.php?option=com_students');
             $this->app->redirect($url);
            }