codemix / hybridauthmanager
一个用于Yii的AuthManager,将层次结构存储在平面PHP文件中,并将分配存储在数据库中
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-08-24 03:56:39 UTC
README
一个用于Yii的AuthManager,将层次结构存储在平面PHP文件中,并将分配存储在数据库中。
这个类是CDbAuthManager和CPhpAuthManager的组合
- 授权层次结构存储在平面PHP文件中
- 授权分配存储在数据库中
如果授权层次结构几乎静态且不太复杂,这将非常有用。
您可以在data/auth.php中管理授权层次结构。为了不丢失注释,您应该避免调用任何创建认证项或添加子项的方法 - 即使它受支持。
安装
我们建议使用composer安装此扩展。将其添加到您的composer.json
文件中的require
部分
'codemix/hybridautmanager' : 'dev-master'
注意:目前还没有稳定的版本。
如果您还没有这样做,您还应该在composer的vendor目录中添加一个别名。
$vendor = realpath(__DIR__.'/../vendor'); return array( 'alias' => array( 'vendor' => realpath(__DIR__.'/../vendor'), // Fix this path ), ...
配置
将此配置添加到您的main.php
'components' => array( 'authManager' => array( 'class' => 'vendor.codemix.hybridautmanager.HybridAuthManager', ), ... ),
就像与CPhpAuthManager
一样,您需要提供一个包含授权规则的文件。默认情况下,它在data/auth.php
中。但在这里,您只需要提供授权层次结构
return array( // Admin == Root (Full permissions). 'Admin' => array( 'type' => CAuthItem::TYPE_ROLE, 'description' => 'Administrator', 'children' => array( 'manageUser', 'managePosts', ), ), 'manageUser' => array( 'type' => CAuthItem::TYPE_TASK, 'children' => array( 'createUser', 'updateUser', 'deleteUser', 'readUser', ), ), 'createUser' => array('type' => CAuthItem::TYPE_OPERATION), 'updateUser' => array('type' => CAuthItem::TYPE_OPERATION), 'deleteUser' => array('type' => CAuthItem::TYPE_OPERATION), 'readUser' => array('type' => CAuthItem::TYPE_OPERATION), );
除非您将cacheID
设置为null
,否则此文件的内容将被缓存。
实际的角色分配将默认保存到数据库表auth_assignments
中。您可以通过authManager
组件的assignmentTable
属性更改此名称。
缓存
组件可以缓存RBAC层次结构和授权分配。您可以在cacheID
上配置缓存组件ID。
缓存层次结构
默认情况下,层次结构文件内容缓存3600
秒。您可以通过hierarchyCachingDuration
来配置此。
缓存授权分配
您可以在assignmentCachingDuration
中设置缓存授权分配的秒数。分配将按用户进行缓存,以避免在每次请求时调用数据库。默认设置为0
,这意味着分配仅在当前请求期间缓存,即在对checkAccess()
的连续调用中。
将此属性设置为false
以完全禁用缓存。