zucchi/security

提供并允许管理 Zucchi ZF2 模块的安全功能的模块

dev-master 2013-07-22 09:26 UTC

This package is not auto-updated.

Last update: 2024-09-14 12:22:32 UTC


README

提供并允许管理 Zucchi ZF2 模块的安全功能的模块

安装

在您的 ZF2 骨架应用程序的根目录下运行

./composer.phar require zucchi/security

授权

此模块包含一个基于 Zend\Permissions\Acl 的授权层。

模块将根据当前用户可用的角色构建一个自定义的 ACL。如果没有用户数据可用,它将默认为为“访客”角色构建一个 ACL。

在每个请求中,它将测试 ACL 以查看当前用户是否有权访问指定的“路由”。

如果当前用户未授权,它将触发未经授权的视图策略并显示登录/注销表单。

辅助工具

作为模块的一部分,您有一个视图和控制器辅助工具。"$this->can(privilege, $resource)" 代理到权限服务方法 "can($privilege, $resource)"

@example : $this->can('edit', 'module:ZucchiUser');

测试 ACL 以查看当前用户分配的任何角色是否允许对 ZucchiUser 模块执行编辑权限。

配置

当将模块添加到您的项目时,需要将其注册到 ZucchiSecurity 模块。

您可以通过添加以下内容(至少)到您的配置来实现这一点。

'ZucchiSecurity' => array(
        'permissions' => array(
            'resources' => array(
                'route' =>array(
                    'MyModuleRouteKey', // the route key used for your module
                ),
            ),
            'rules' => array(
                array(
                    'action' => 'allow'
                    'role' => 'guest',
                    'resource' => 'route:MyModuleRouteKey',
                    'privileges' => array('view'),
                ),
            )
        ),
    ),

有关配置不同选项的详细说明,请参阅 ./config/zucchisecurity.access.local.php.dist

身份验证

该模块包含一个内置的身份验证层,当当前用户未授权查看当前路由时将触发。

此身份验证依赖于 ZucchiUser 模块进行用户管理

扩展

可以通过附加以下 'ZucchiSecurity' 事件轻松扩展身份验证过程

    const EVENT_LOGIN_FORM_BUILD   = 'zucchisecurity.form.login.build';
    const EVENT_LOGOUT_FORM_BUILD  = 'zucchisecurity.form.logout.build';
    
    const EVENT_AUTHENTICATE       = 'zucchisecurity.authenticate';
    const EVENT_AUTH_POST          = 'zucchisecurity.authenticate.post';

zucchisecurity.form.???.build

这些事件允许您扩展用于登录和注销的表单

zucchisecurity.authenticate

此事件允许您添加自己的身份验证逻辑的触发器。

在身份验证时,您必须返回 ZucchiSecurity\Authentication\Result 或兼容接口的实例。

N.B. 不要忘记在成功身份验证时停止事件的传播。

zucchisecurity.authenticate.post

此事件允许您挂钩到身份验证的结果。

一个很好的例子可以在 ZucchiUser 模块中找到,该模块挂钩到此事件并创建成功登录的记录。

路线图

  • 实现注册功能