ZendFramework 2 下安装zfc-user 、zfc-user-doctrine-orm、BjyAuthorize

简介:
zfc是ZendFramework 2 标准模块外提供的公共库,即 Zend Framework Common,包含了一些常用的功能块,例如 user、rabc 等功能。
zfc-user:zfc中的用户功能,提供了基于数据库的用户鉴权、用户登录、注销等基本的功能。
zfc-user-doctrine-orm:为 zfc-user 提供 doctrine orm 模式的模块,能够使用户功能通过指定的用户实体(Entity)进行持久化存储。
BjyAuthorize :为 zfc-user 提供基于角色-用户(Role-User)的用户、权限管理模块,支持指定  doctrine orm 的用户、角色实体(Entity)。开发者可以指定和扩展自己的 User 、Role 类。

一、安装zfc-user-doctrine-orm 、bjy-authorize模块

1、安装这两个模块前必须安装并配置好 Doctrine ORM,具体步骤参考:ZendFramework 2 下安装和配置 Doctrine 2 的步骤

2、安装模块库

zfc-user-doctrine-orm

php composer.phar require zf-commons/zfc-user-doctrine-orm 

bjy-authorize

php composer.phar require bjyoungblood/bjy-authorize:1.4.* 

(注:如果已经配置好全局使用composer,注意更改前段的命令)

二、配置模块

修改:config/application/application.config.php, 像下面这样:

'modules' => array(
    'DoctrineModule',
    'DoctrineORMModule',
    'ZfcBase',
    'ZfcUser',
    'ZfcUserDoctrineORM',,
    'BjyAuthorize',
    'Application',
),

三、配置数据库

有两种方法,推荐第二种:

第一种:在MySql中执行以下SQL:

(原文件链接: ZfcUser SQL schema )

SQL:

CREATE TABLE `user`
(
    `user_id`       INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `username`      VARCHAR(255) DEFAULT NULL UNIQUE,
    `email`         VARCHAR(255) DEFAULT NULL UNIQUE,
    `display_name`  VARCHAR(50) DEFAULT NULL,
    `password`      VARCHAR(128) NOT NULL,
    `state`         SMALLINT UNSIGNED
) ENGINE=InnoDB CHARSET="utf8";

第二种:使用 doctrine-module 来配置:

1、尝试输出 SQL

vendor/bin/doctrine-module orm:schema-tool:update --dump-sql 

如果是在win系统

vendorbindoctrine-module.bat orm:schema-tool:update --dump-sql 

提示:如果你希望使用不同的表结构或者用户实体,你可以在 zfcuser 的config 文件 中设置参数 enable_default_entities(后文会有提到) 。

2、执行 ORM 数据库同步

如果上一条命令能够正确的输出数据库SQL命令,那么久表示设置好了,执行下面的命令同步数据库:

vendor/bin/doctrine-module orm:schema-tool:update --force 

如果是在win系统

vendorbindoctrine-module.bat orm:schema-tool:update --force 

你现在可以使用路由 /user 路由来访问zfc-user模块了

四、配置 BjyAuthorize
1、复制 BjyAuthorize 模块目录 data 下的文件 User.php.dist, Role.php.dist 到你自己的模块的 Entity 目录下。并分别更名为 User.php, Role.php。
修改文件 User.php、Role.php 的命名空间 namespace 你的模块名Entity
修改 User.php 文件中的 Role 字段的注释 targetEntity=”你的模块名EntityRole”
修改 Role.php 文件中的 parent字段的注释 targetEntity=”你的模块名EntityRole”,

2、在你自己的模块配置文件添加以下配置:

 /* 部署 BjyAuthorize */
    'doctrine' => array(
        'driver' => array(
            // overriding zfc-user-doctrine-orm's config
            'zfcuser_entity' => array(
                'class' => 'DoctrineORMMappingDriverAnnotationDriver',
                'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity',
                ),
            ),

            'orm_default' => array(
                'drivers' => array(
                     __NAMESPACE__ . 'Entity' => 'zfcuser_entity'
                ),
            ),
        ),
    ),

    'zfcuser' => array(
        // telling ZfcUser to use our own class
        'user_entity_class'       => __NAMESPACE__.'EntityUser',
        // telling ZfcUserDoctrineORM to skip the entities it defines
        'enable_default_entities' => false,
    ),

    'bjyauthorize' => array(
        // Using the authentication identity provider, which basically reads the roles from the auth service's identity
        'identity_provider' => 'BjyAuthorizeProviderIdentityAuthenticationIdentityProvider',

        'role_providers'        => array(
            // using an object repository (entity repository) to load all roles into our ACL
            'BjyAuthorizeProviderRoleObjectRepositoryProvider' => array(
                'object_manager'    => 'doctrine.entitymanager.orm_default',
                'role_entity_class' => __NAMESPACE__.'EntityRole',
            ),
        ),
    )

3、同步数据库

vendor/bin/doctrine-module orm:schema-tool:update --force 

4、添加角色数据到数据库(根据需要修改)

INSERT INTO `role`
    (`id`, `parent_id`, `roleId`)
VALUES
    (1, NULL, 'guest'),
    (2, 1, 'user'),
    (3, 2, 'moderator'),
    (4, 3, 'administrator');

五、使用路由 /user 访问网站
注册和使用用户
如果需要调整用户的角色,需要手工调整数据表 user_role_linker

发表评论

电子邮件地址不会被公开。 必填项已用*标注