unclexo / xo-user
一个用于用户认证和管理数据库中用户会话的ZF2模块。
1.0.0
2017-07-30 13:27 UTC
Requires
- php: >=5.3.3
- zendframework/zendframework: >=2.2.7,<=2.5.0
This package is auto-updated.
Last update: 2024-09-29 05:01:07 UTC
README
XOUser 是一个用于 Zend Framework 2 的用户认证和注册的骨架模块。这是通过扩展其现有功能来快速制作用户模块的。XOUser 将会话数据存储在数据库中。这主要是 Zend\Db、Zend\Session 和 Zend\Authentication 的组合,用于持久化管理用户。
版本
请使用以下版本之一
特性
- 用户登录 - 通过用户名或电子邮件进行认证(指定这两个中的一个并在其他地方更改)。
- 用户注册。
- 用户更改密码。
- 表单具有 CSRF 防护。
安装
使用 composer
- 在您的项目终端中,使用以下命令。
$ composer require unclexo/xo-user
- 在您的
application.config.php
文件中添加此XOUser
模块名称。
<?php return array( 'modules' => array( // ... 'XOUser', ), // ... );
数据库配置
XOUser 预期并假设您在名为 db
的顶级键下有一个有效的数据库配置。
数据库表
XOUser 预期有两个数据库表,分别命名为 users
和 session
,用于分别管理用户和会话。
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `email` varchar(100) DEFAULT NULL, `username` varchar(100) DEFAULT NULL, `password` varchar(60) DEFAULT NULL, `modifiedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(`id`), KEY `idx_email` (`email`), KEY `idx_username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `users` (`id`, `email`, `username`, `password`, `modifiedAt`, `createdAt`) VALUES (1, 'admin@gmail.com', 'admin', '$2y$10$iMDN8kS81DAdHy9/zNd3we2ChPwhy2bTkVIsCyHpNtaNZl9zUuyxG', '0000-00-00 00:00:00', '0000-00-00 00:00:00'); CREATE TABLE IF NOT EXISTS `session` ( `id` char(32) NOT NULL, `name` char(32) NOT NULL, `modified` int(11) DEFAULT NULL, `lifetime` int(11) DEFAULT NULL, `data` text, PRIMARY KEY (`id`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
会话配置
如果您想为处理会话设置自定义配置,您应该在顶级键 session_config
下进行操作。如果您还没有为您的会话设置自定义配置,请将以下内容放入 ./config/module.config.php
<?php 'session_config' => array( 'name' => 'session_name', 'use_cookies' => true, 'cookie_lifetime' => 0, 'gc_maxlifetime' => 3600, ),
使用方法
在您的控制器方法中使用以下代码片段来管理登录操作。有关更多信息,您应检查 LoginController
的 processAction
方法。
<?php $auth = $this->getAuthService() ->getAdapter() ->setIdentity($data['username']) ->setCredential($data['password']) ->setIdentityType('username'); // This can only be 'username' and 'email' $result = $this->getAuthService()->authenticate(); if ($result->isValid()) { // Do something } else { // Do something }
接下来,只需在需要的地方重复使用这个方法即可。
<?php if (!$this->getAuthService()->hasIdentity()) { return $this->redirect()->toRoute('auth'); }
可用路由
/auth /auth/login /auth/signup /auth/change-password /auth/logout
访问您的网站:http://yoursite.dev/auth,您应该看到一个登录页面。
登录
username: admin
password: 12345678
密码哈希注意事项
不要更改密码哈希设置为其默认值 除非您完全理解您正在做什么以及为什么要这样做!
ZF2 组件
以下 ZF2 组件在 XOUser 模块中被广泛使用:
- Zend/Authentication
- Zend/Crypt
- Zend/Db
- Zend/Filter
- Zend/Form
- Zend/InputFilter
- Zend/Json
- Zend/ModuleManager
- Zend/Mvc
- Zend/ServiceManager
- Zend/Session
- Zend/Validator
- Zend/View
许可证
此 ZF2 模块在 MIT 许可下发布。