![](/img/trans.png)
[英]How do I get Yii2 RBAC via DbManager use Joomla "user" table and userid from Joomla session?
[英]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.