繁体   English   中英

将Yii2集成到Joomla中并使用Joomla的“用户”表

[英]Integrating Yii2 into Joomla and using Joomla's “user” table

最终,我试图将Yii2集成到Joomla中,以便可以将Joomla的用户管理功能与Yii2's RBAC功能结合使用。 例如,我想允许用户signup使用Joomla's registration过程,但我想定义使用的角色和身份验证规则Yii2's RBAC

问题是Yii2似乎无法使用Joomla's "user"表来查找当前登录用户的user_id值(如果我想针对Yii2的RBAC auth_assignment表检查登录用户的权限,则这是必需的)。

注意:我在Joomla 3旁边使用“基本”模板

成功标准:- "Yii::$app->user->getId();" 应该从Joomla的user表中返回当前登录用户的user_id -Yii2的RBAC函数也应该起作用,并且在查找user_id时使用Joomla的“用户”表-

if (Yii::$app->user->can('some-auth-item'))
    {
        return $this->render('some-page');
    }

到目前为止,这是我未成功尝试的操作:

1)将Yii2添加到Joomla到index.php中(此加载没有问题)

链接: http://www.yiiframew...ntegration.html代码:

require('/../../../basic/vendor/yiisoft/yii2/yii.php');
$yiiConfig = require('/../../../basic/config/web.php');
new yii\web\Application($yiiConfig); // Do NOT call run() here

2)更改models / User.php中的默认用户表

链接: http://stackoverflow...le-name-in-yii2代码:

class User extends ActiveRecord implements IdentityInterface
  {

      public static function tableName()
      {
         return 'fm3lk_user';
      }

3)在index.php中使用以下代码进行了测试,并使用管理员帐户登录到Joomla前端,但未返回任何值

<?php 
        $zzz = Yii::$app->user->getId();
        echo $zzz;
    ?>

您正在将基本用户模型与用户身份混淆。

当用户登录joomla时,它会创建一个用户会话,该用户会话未连接到yii2用户身份(Yii :: $ app-> user,该用户会话一旦初始化,无论如何都会从会话获取数据,但与joomla one的结构不同)。 在yii2中,用户模型实现了身份界面

    class User extends ActiveRecord implements IdentityInterface

因此,在joomla成功登录后,您还应该登录yii2。

http://www.yiiframework.com/doc-2.0/yii-web-user.html#login%28%29-detail

    $userModel = new User;
    $userModel->findIdentity($joomlaUserId);
    Yii::$app->getUser()->login($userModel, $duration);

其中$ userModel实现yii \\ web \\ IdentityInterface并映射到joomla用户表上,其中$ duration与joomla会话持续时间匹配。 之后,您将可以访问Yii :: $ app-> user-> getId();。

在joomla登出lougout yii2应用程序中也是如此。

您可以从Joomla的用户表中使用gii创建一个新的用户模型。 我认为这可能是一个更简单的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM