toneladas / acl
系统访问管理库
v1.0.0
2017-02-26 01:29 UTC
Requires
- php: >=5.5
Requires (Dev)
- doctrine/common: ^2.6
- doctrine/dbal: ^2.5
- doctrine/orm: ^2.5
- phpunit/phpunit: 5.2.*
This package is not auto-updated.
Last update: 2024-09-18 20:35:00 UTC
README
用于操作用户系统访问的库
使用
安装
composer require toneladas/acl
配置
您可以使用PDO "纯"连接或使用Doctrine实体来使用此库。
此库使用password_hash和password_verify函数,因此当将用户数据保存到数据库时,请使用这些函数。
使用PDO "纯"连接
使用setWithDatabase
配置连接
<?php $conn = new \PDO('sqlite::memory:'); $acl = new \Toneladas\Acl(); $acl->setWithDatabase($conn); // Objeto da PDO usado para conexão no banco de dados $acl->setTable('usuarios'); // Nome da tabela usada no banco para guardar os usuários $acl->setFieldUser('email'); // Nome do campo na tabela usado como o nome do usuário $acl->setFieldPassword('senha'); // Nome do campo na tabela usado como a senha do usuário
使用Doctrine实体
使用setWithDoctrine
配置连接
<?php $acl = new \Toneladas\Acl(); $this->acl->setWithDoctrine($entityManager); // Instancia do EntityManager do Doctrine $this->acl->setEntity('\tests\Entities\User'); // Nome da entidade que refere-se a tabela de usuarios $this->acl->setFieldUser('user'); // Nome no campo na tabela usado como o nome do usuário $this->acl->setMethodPassword('getPassword'); // Metodo da entidade para pegar a senha
您还可以配置用户为电子邮件地址,这样库将验证表单中传入的电子邮件地址是否有效。
<?php $acl->isEmail(); $acl->verify('usuario', '123'); // Irá jogar uma exception, pois 'usuario' não é um endereço de email válido
验证
要验证用户名和密码是否正确,请将来自表单的数据作为verify
方法的参数传递。
<?php try { $acl->verify($usuario, $senha); // Deu tudo certo, seguimos em frente } catch (\Exception $exp) { // Alguma coisa deu errada }
它可能返回三个异常
\Toneladas\Exceptions\UserWrongException
:未在数据库中找到传递的用户\Toneladas\Exceptions\PasswordWrongException
:提供的密码不正确\Toneladas\Exceptions\EmailInvalidException
:如果您已将用户验证配置为电子邮件
您还可以根据不同情况分别处理异常
<?php try { $acl->verify($usuario, $senha); // Deu tudo certo, seguimos em frente } catch (\Toneladas\Exceptions\UserWrongException $exp) { // O usuário não foi encontrado, então faço alguma coisa } catch (\Toneladas\Exceptions\PasswordWrongException $exp) { // A senha está incorreta, então faço outra coisa }
请记住,最好不要告诉用户哪个出了问题,而只是告知发生了一个错误
我知道Doctrine也使用PDO与数据库连接
许可证
在MIT许可证下授权
有关详细信息,请参阅LICENSE文件。