Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将Yii2集成到Joomla并使用Joomla';s";“用户”;桌子_Php_Joomla_Yii2 - Fatal编程技术网

Php 将Yii2集成到Joomla并使用Joomla';s";“用户”;桌子

Php 将Yii2集成到Joomla并使用Joomla';s";“用户”;桌子,php,joomla,yii2,Php,Joomla,Yii2,最终,我尝试将Yi2集成到Joomla中,以便将Joomla的用户管理功能与Yi2的RBAC功能结合使用。例如,我想允许用户使用Joomla的注册过程注册,但我想使用Yii2的RBAC定义角色和身份验证规则 问题在于Yii2似乎无法使用Joomla的“user”表来查找当前登录用户的user\u id值(如果我想根据Yii2的RBAC auth\u分配表检查登录用户的权限,这是必要的) 注意:我使用的是Joomla 3旁边的“基本”模板 成功标准: -“Yii::$app->user->getI

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

问题在于
Yii2
似乎无法使用
Joomla的“user”
表来查找当前登录用户的user\u id值(如果我想根据Yii2的RBAC auth\u分配表检查登录用户的权限,这是必要的)

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

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

以下是迄今为止我尝试过但未成功的方法:

1) 将Yii2添加到Joomla的index.php中(加载时不会出现问题)

链接: 代码:

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

链接: 代码:

3) 在index.php中使用以下代码进行测试,并使用Admin帐户登录到Joomla前端,但不返回值

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


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

你把基本用户模型和用户身份混淆了

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

    class User extends ActiveRecord implements IdentityInterface
因此,在joomla成功登录后,您还应该登录yii2

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


在joomla logout lougout Yi2应用程序上也是如此。

我真的很困惑。通常,您从会话而不是表中获取登录用户id。如果您需要Joomla提供的用户id,为什么不直接执行
$id=JFactory::getUser()->id
?原因是我正在使用Yii2的RBAC函数来验证当前用户的权限,然后再运行我在Yii2中定义的命令。示例:如果(Yii::$app->user->can('some-auth-item'){return$this->render('some-page');}---我如何配置Yii2从Joomla登录会话获取用户id,然后使用此id检查auth_assignment RBAC表中的权限分配?我向您展示了如何获取它,不幸的是,我不知道如何在Yii2中使用它。
class User extends ActiveRecord implements IdentityInterface
  {

      public static function tableName()
      {
         return 'fm3lk_user';
      }
<?php 
        $zzz = Yii::$app->user->getId();
        echo $zzz;
    ?>
    class User extends ActiveRecord implements IdentityInterface
    $userModel = new User;
    $userModel->findIdentity($joomlaUserId);
    Yii::$app->getUser()->login($userModel, $duration);