首页
开发文档
应用商店
商业授权
免费下载
捐赠列表
后台演示
登录
|
注册
两步验证
类别:
插件
分类:
注册登录
作者:
美食秀
适用版本:
未知版本、未知版本、未知版本
最近更新:
2018-02-24 02:18
首次发布:
2018-02-24 02:18
浏览次数:
6806
价格
免费
投票数:
2
总评分:
5.0
当前打分:
立即购买
添加收藏
(
6
)
应用简介
下载列表(1)
评论列表(1)
为了防止网站后台工作人员账号密码意外泄露带来的安全问题(如CSDN事件),可以考虑给后台登录加一个两步验证 ### 一、安装 - 下载插件并解压到 `/plugins` 目录 - 修改 `/application/admin/controller/Admin.php` 在 `protected function _initialize()` 方法的第一行添加代码 ~~~ /** * 初始化 * @author 蔡伟明 <314013107@qq.com> */ protected function _initialize() { // 两步验证钩子 $hook_result = \think\Hook::listen('two_step'); if (!empty($hook_result) && true !== $hook_result[0]) { $current_url = request()->url(); // 当前 url if ( // 下面三个 URL 不跳转到两步验证页 strpos ( $current_url , plugin_url('TwoStep/Admin/verification') ) === false && // 两步验证页 strpos ( $current_url , plugin_url('TwoStep/Admin/signin') ) === false && // 验证两步验证码 strpos ( $current_url , url('user/publics/signout') ) === false // 登出账号 ){ $this->redirect(plugin_url('TwoStep/Admin/verification')); } } . . . . . } ~~~ - 修改 `/application/admin/controller/Index.php` 用下面代码覆盖 `public function profile()` 方法 ~~~ /** * 个人设置 * @author 蔡伟明 <314013107@qq.com> */ public function profile() { // 保存数据 if ($this->request->isPost()) { $data = $this->request->post(); $data['nickname'] == '' && $this->error('昵称不能为空'); $data['id'] = UID; // 如果没有填写密码,则不更新密码 if ($data['password'] == '') { unset($data['password']); } $UserModel = new UserModel(); if ($user = $UserModel->allowField(['nickname', 'email', 'password', 'mobile', 'avatar'])->update($data)) { // 记录行为 action_log('user_edit', 'admin_user', UID, UID, get_nickname(UID)); $this->success('编辑成功'); } else { $this->error('编辑失败'); } } // 获取数据 $info = UserModel::where('id', UID)->field('password', true)->find(); // 开启两步验证功能 $generate_secret_url = plugin_url('TwoStep/Admin/generateSecret'); $js = << $(function(){ $("#is_two_step").change(function() { if($('#is_two_step').is(':checked')) { $.get("{$generate_secret_url}", function(res){ if(res.code == 0){ Dolphin.notify(res.msg, 'danger'); $("#is_two_step").removeAttr("checked"); } else { $("#two_step_secret").val(res.secret); $("#form_group_is_two_step > .col-sm-12").after("<img src="" alt="QRCode" />"); } }); } else { $("#two_step_secret").val(''); $("#QRCode").remove(); } }); }); EOF; $items = [ // 批量添加表单项 ['static', 'username', '用户名', '不可更改'], ['text', 'nickname', '昵称', '可以是中文'], ['text', 'email', '邮箱', ''], ['password', 'password', '密码', '必填,6-20位'], ['text', 'mobile', '手机号'], ['image', 'avatar', '头像'] ]; if (isset($info['two_step_secret'])){ // 两步验证插件已安装 if ($info['two_step_secret']){ array_push ( $items , ['switch', 'is_two_step', '两步验证', '关闭后再开启可重新生成二维码', 1] ); }else{ array_push ( $items , ['switch', 'is_two_step', '两步验证', '开启后用 <code>Google Authenticator</code> 扫描二维码', 0] ); } array_push ( $items , ['hidden', 'two_step_secret'] ); }else{ $js = ''; } // 使用ZBuilder快速创建表单 return ZBuilder::make('form') ->addFormItems($items) ->setFormData($info) // 设置表单数据 ->setExtraJs($js) ->fetch(); } ~~~ - 到后台“扩展中心”安装“两步验证”插件 - 安装后再“设置插件”,把主机名改成自己的 [![QQ截图20171020134353.png](http://bbs.dolphinphp.com/uploads/article/20171020/448d3edc97885c478b19bb84e71b4971.png "QQ截图20171020134353.png")](http://bbs.dolphinphp.com/uploads/article/20171020/448d3edc97885c478b19bb84e71b4971.png) - 开启非“超级管理员”的插件运行权限 [![QQ截图20171020140227.png](http://bbs.dolphinphp.com/uploads/article/20171020/4893b1d057d2d8fe29c9cb6407020dd9.png "QQ截图20171020140227.png")](http://bbs.dolphinphp.com/uploads/article/20171020/4893b1d057d2d8fe29c9cb6407020dd9.png) *PS: 如果插件设置和权限设置没生效,请清空缓存!* ### 二、使用 - 打开“个人设置”页 [![QQ截图20171020134456.png](http://bbs.dolphinphp.com/uploads/article/20171020/94daeb05d4b045ee53d43ee47e78c44e.png "QQ截图20171020134456.png")](http://bbs.dolphinphp.com/uploads/article/20171020/94daeb05d4b045ee53d43ee47e78c44e.png) - 拖到页面底部,开启两步验证 [![QQ截图20171020134955.png](http://bbs.dolphinphp.com/uploads/article/20171020/b06afb134fb2447cfb08ecafa3356126.png "QQ截图20171020134955.png")](http://bbs.dolphinphp.com/uploads/article/20171020/b06afb134fb2447cfb08ecafa3356126.png) - 开启后立即用 Google Authenticator 扫描二维码(不过我还是推荐使用 Authy 这款 APP,即使刷机也不怕验证码丢失) [![IMG_2652(20171020-143848).jpg](http://bbs.dolphinphp.com/uploads/article/20171020/0a2b824503c4618641e208f06706715a.jpg "IMG_2652(20171020-143848).jpg")](http://bbs.dolphinphp.com/uploads/article/20171020/0a2b824503c4618641e208f06706715a.jpg) - 确定扫描成功后再提交保存! - 退出后台重新登录,在系统验证完账号密码后,如果要登录的用户开启了两步验证,则会再要求输入验证码,验证成功后方可进入后台 [![QQ截图20171020135521.png](http://bbs.dolphinphp.com/uploads/article/20171020/7480cf56aa05f71d0383cf13cbaccf67.png "QQ截图20171020135521.png")](http://bbs.dolphinphp.com/uploads/article/20171020/7480cf56aa05f71d0383cf13cbaccf67.png) ### 三、关闭两步验证 - 若要关闭两步验证只需要在“个人设置”页关闭并保存即可 ### 四、其他说明 > 本插件基于 DolphinPHP 1.0.7 开发,对于 1.0.7 之前的版本并没有进行测试,但应该问题不大。 > 目前测试下来是支持 DolphinPHP 1.1.0 的!但如果你从低版本升级到 1.1.0 后发现无法登录后台,请先删除 runtime 目录;如果还使用了 Redis 缓存,需要清空下 Redis 缓存数据的内容!
6年前
V1.0.0
暂无版本说明
点击下载 V1.0.0
lxj
已经不兼容了1.4.5
赞同(
0
)
-
回复
-
4年前
评论
取消回复
验证码
提交
其他应用
计划任务