unclexo/xo-user

一个用于用户认证和管理数据库中用户会话的ZF2模块。

1.0.0 2017-07-30 13:27 UTC

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

  1. 在您的项目终端中,使用以下命令。
$ composer require unclexo/xo-user
  1. 在您的 application.config.php 文件中添加此 XOUser 模块名称。
<?php
  return array(
    'modules' => array(
      // ...
      'XOUser',
    ),
    // ...
  );

数据库配置

XOUser 预期并假设您在名为 db 的顶级键下有一个有效的数据库配置。

数据库表

XOUser 预期有两个数据库表,分别命名为 userssession,用于分别管理用户和会话。

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,
),

使用方法

在您的控制器方法中使用以下代码片段来管理登录操作。有关更多信息,您应检查 LoginControllerprocessAction 方法。

<?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 模块中被广泛使用:

许可证

此 ZF2 模块在 MIT 许可下发布。