Php 将Yii2集成到Joomla并使用Joomla';s";“用户”;桌子
最终,我尝试将Yi2集成到Joomla中,以便将Joomla的用户管理功能与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的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);