muffin / hyperlinkauth
CakePHP 3 的无密码认证
dev-master / 1.0.x-dev
2016-03-25 20:52 UTC
Requires
- cakephp/cakephp: ~3.0
Requires (Dev)
- phpunit/phpunit: ~4.1
Suggests
- muffin/tokenize: Tokens abstraction plugin for CakePHP 3
This package is auto-updated.
Last update: 2024-08-28 01:11:30 UTC
README
CakePHP 3 的无密码认证。
在登录页面提交用户电子邮件后发送登录链接。
- 用户提交电子邮件
- 系统在验证电子邮件后发送链接
- 用户点击链接
- 系统在验证令牌后对用户进行身份验证
安装
使用 Composer
composer require muffin/hyperlinkauth:1.0.x-dev
然后,您需要加载插件。您可以使用以下 shell 命令
bin/cake plugin load Muffin/HyperlinkAuth
或者通过手动将以下语句添加到您的应用程序的 config/bootstrap.php
Plugin::load('Muffin/HyperlinkAuth');
使用方法
// src/Controller/AppController.php public function initialize() { $this->loadComponent('Auth', ['authenticate' => ['Muffin/HyperlinkAuth.Hyperlink']]); }
然后创建您的登录操作
// src/Controller/UsersController.php public function login() { if (!$this->request->is('post') && !$this->request->is('token')) { return; } $user = $this->Auth->identify(); if ($user === true) { $this->Flash->success(__('A one-time login URL has been emailed to you')); return; } if ($user) { $this->Auth->setUser($user); return $this->redirect($this->Auth->redirectUrl()); } $this->Flash->error(__('Email is incorrect'), [ 'key' => 'auth' ]); }
如果您注意到,这与 默认操作方式 非常相似,区别在于它检查请求的 token
类型并处理 $user === true
(当发送电子邮件时返回)。
对于发送电子邮件,您可以选择不同的方法。这里展示的最简单的方法(在此处演示),使用 UsersController
作为监听 Auth.afterIdentify
事件的监听对象。另一种方法是使用邮件发送器。
代码
// src/Controller/UsersController.php public function implementedEvents() { return parent::implementedEvents() + [ 'Auth.afterIdentify' => 'afterIdentify', ]; } public function afterIdentify(Event $event, $result, HyperlinkAuthenticate $auth) { if (!$this->request->is('post')) { return; } $token = $auth->token($result); $url = Router::url($this->Auth->config('loginAction') + ['?' => compact('token')], true); Email::deliver($result['email'], 'Login link', $url, ['from' => 'no-reply@' . env('HTTP_HOST')]); return true; }
补丁和功能
- 分支
- 修改,修复
- 测试 - 这很重要,所以它不会无意中损坏
- 提交 - 不要修改许可证,todo,版本等。(如果您确实更改了任何内容,请将它们提升到自己的提交中,这样我在拉取时可以忽略它们)
- 提交请求 - 主题分支的额外加分项
为了确保您的 PR 被考虑,您必须遵循 CakePHP 编码标准。
缺陷和反馈
http://github.com/usemuffin/hyperlinkauth/issues
许可证
版权所有 (c) 2016, Use Muffin,并许可于 MIT 许可证。