mosaxiv / cakephp-token-verify
轻松颁发可用于邮件认证的令牌。
1.0.0
2017-12-05 15:13 UTC
Requires
- php: >=7.0.0
- cakephp/cakephp: ~3.0
- lcobucci/jwt: ^3.2
Requires (Dev)
- cakephp/cakephp-codesniffer: ^3.0
- phpunit/phpunit: ^5.7|^6.0
This package is auto-updated.
Last update: 2024-09-15 06:39:17 UTC
README
用于邮件认证的JWT。
轻松颁发(JWT)可用于邮件认证的令牌。
无需在表中设置令牌字段。
一次性/URL安全的/安全性 👍
需求
- PHP 7.0+
- CakePHP 3.0.0+
安装
composer require mosaxiv/cakephp-token-verify
示例
重置密码
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, # Required name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, created DATETIME, modified DATETIME # Required );
// app/src/Model/Entity/User.php use Token\Model\Entity\TokenTrait; class User extends Entity { use TokenTrait; }
// app/src/Controller/UsersController.php use Cake\Routing\Router; use Token\Util\Token; class UsersController extends AppController { public function forgotPassword() { if ($this->request->is('post')) { $email = $this->request->getData('email'); $user = $this->Users->findByEmail($email)->first(); if ($user) { $token = $user->tokenGenerate(); $url = Router::url(['controller' => 'User', 'action' => 'resetPassword', $token], true); // send email } } } public function resetPassword($token) { $user = $this->Users->get(Token::getId($token)); if (!$user->tokenVerify($token)) { throw new \Cake\Network\Exception\NotFoundException(); } if ($this->request->is('post')) { $user = $this->Users->patchEntity($user, $this->request->getData()); if ($this->Users->save($user)) { // success } else { // error } } } }
用法
所需的数据库字段
id
字段modified
字段
通过使用modified字段,JWT可以用作一次性令牌。
JWT应在更新表时被丢弃。
Token\Model\Entity\TokenTrait
用于实体。
tokenGenerate($minits = 10)
// token generate(default token expiration in 10 minits) $token = $entity->tokenGenerate(); // token generate(token expiration in 60 minits) $token = $entity->tokenGenerate(60);
tokenVerify($token)
$user->tokenVerify($token) // true or false
setTokenData($name, $value)
※ 它不会加密设置的数据
$user->setTokenData('test', 'testdata')
Token\Util\Token
Token::getId($token)
Token::getId($token) // id or false
Token::getData($token, $name)
Token::getData($token, 'test') // data or false