daydiff / yii2-auth-chain
Yii2 授权链
v1.0.0
2016-07-28 06:21 UTC
Requires
- php: >=5.4.0
- yiisoft/yii2: *
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-14 18:26:20 UTC
README
这是用来做什么的?
用于具有分层访问角色系统的应用程序。
有示例吗?不是很清楚
您有一个应用程序 - API。这里有两个角色
- admin - 他们可以查看统计数据和编辑客户;
- client - 他们可以看到自己的统计数据并设置设置。
您需要允许管理员在不了解密码的情况下,仅通过管理员界面作为客户进行授权。您还需要允许管理员在不重新登录的情况下返回自己的权限/账户。当然,您还需要正确记录管理员作为客户所做的所有更改,这样您总是知道谁实际上做出了某些更改。
安装
$ composer require daydiff/yii2-auth-chain
使用
注册应用程序组件
'components' => [ 'authChain' => [ 'class' => 'Daydiff\AuthChain\Service' ], ]
您需要声明一个实现 \Daydiff\AuthChain\MemberInterface 的成员类
//Member.php namespace app\foo\bar; class Member implements \Daydiff\AuthChain\MemberInterface { private $id; private $login; /** * @inheritdoc */ function getId() { return $this->id; } /** * @inheritdoc */ function getLogin() { return $this->login; } /** * @inheritdoc */ function setId($id) { $this->id = $id; return $this; } /** * @inheritdoc */ function setLogin($login) { $this->login = $login; return $this; } }
在您用于作为客户进行授权的动作中
public function actionAuthAs($id) { $user = \Yii::$app->getIdentity()->getUser(); $member = new app\foo\bar\Member(); $member->setId($user->id) ->setLogin($user->login); \Yii::$app->authChain->push($member); //and then you do authorization work }
当您需要知道用户实际是谁时
$member = \Yii::$app->authChain->last(); $realUserId = $member->getId();