From 0c953105c8df96d2fb3655a2403d4b7bf009cbfc Mon Sep 17 00:00:00 2001 From: Karson <karsonzhang@163.com> Date: Wed, 6 Dec 2017 17:28:24 +0800 Subject: [PATCH] 新增后台登录验证码功能 优化登录相关配置 --- application/admin/controller/Index.php | 16 ++++++++++++---- application/admin/lang/zh-cn/index.php | 1 + application/admin/library/Auth.php | 4 ++-- application/admin/view/index/login.html | 12 ++++++++++-- application/config.php | 11 +++++++++-- public/assets/js/backend/index.js | 2 +- 6 files changed, 35 insertions(+), 11 deletions(-) diff --git a/application/admin/controller/Index.php b/application/admin/controller/Index.php index f7e39b6..2b2ed9f 100644 --- a/application/admin/controller/Index.php +++ b/application/admin/controller/Index.php @@ -2,7 +2,10 @@ namespace app\admin\controller; +use app\admin\model\AdminLog; use app\common\controller\Backend; +use think\Config; +use think\Hook; use think\Validate; /** @@ -64,13 +67,18 @@ class Index extends Backend 'password' => $password, '__token__' => $token, ]; - $validate = new Validate($rule); + if (Config::get('fastadmin.login_captcha')) + { + $rule['captcha'] = 'require|captcha'; + $data['captcha'] = $this->request->post('captcha'); + } + $validate = new Validate($rule, [], ['username' => __('Username'), 'password' => __('Password'), 'captcha' => __('Captcha')]); $result = $validate->check($data); if (!$result) { $this->error($validate->getError(), $url, ['token' => $this->request->token()]); } - \app\admin\model\AdminLog::setTitle(__('Login')); + AdminLog::setTitle(__('Login')); $result = $this->auth->login($username, $password, $keeplogin ? 86400 : 0); if ($result === true) { @@ -87,9 +95,9 @@ class Index extends Backend { $this->redirect($url); } - $background = cdnurl("/assets/img/loginbg.jpg"); + $background = cdnurl(Config::get('fastadmin.login_background')); $this->view->assign('background', $background); - \think\Hook::listen("login_init", $this->request); + Hook::listen("login_init", $this->request); return $this->view->fetch(); } diff --git a/application/admin/lang/zh-cn/index.php b/application/admin/lang/zh-cn/index.php index a0ad15a..661a910 100644 --- a/application/admin/lang/zh-cn/index.php +++ b/application/admin/lang/zh-cn/index.php @@ -39,4 +39,5 @@ return [ 'Docs' => '官方文档', 'Forum' => '交流社区', 'QQ qun' => 'QQ交流群', + 'Captcha' => '验证码', ]; diff --git a/application/admin/library/Auth.php b/application/admin/library/Auth.php index 1b14740..3e17cbf 100644 --- a/application/admin/library/Auth.php +++ b/application/admin/library/Auth.php @@ -5,6 +5,7 @@ namespace app\admin\library; use app\admin\model\Admin; use fast\Random; use fast\Tree; +use think\Config; use think\Cookie; use think\Request; use think\Session; @@ -14,7 +15,6 @@ class Auth extends \fast\Auth protected $requestUri = ''; protected $breadcrumb = []; - protected $loginUnique = false; //是否同一账号同一时间只能在一个地方登录 protected $logined = false; //登录状态 public function __construct() @@ -165,7 +165,7 @@ class Auth extends \fast\Auth return false; } //判断是否同一时间同一账号只能在一个地方登录 - if ($this->loginUnique) + if (Config::get('fastadmin.login_unique')) { $my = Admin::get($admin->id); if (!$my || $my->token != $admin->token) diff --git a/application/admin/view/index/login.html b/application/admin/view/index/login.html index d0f2cc6..0a298cc 100644 --- a/application/admin/view/index/login.html +++ b/application/admin/view/index/login.html @@ -63,7 +63,7 @@ <div class="login-form"> <img id="profile-img" class="profile-img-card" src="__CDN__/assets/img/avatar.png" /> <p id="profile-name" class="profile-name-card"></p> - + <form action="" method="post" id="login-form"> <div id="errtips" class="hide"></div> {:token()} @@ -76,7 +76,15 @@ <div class="input-group-addon"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></div> <input type="password" class="form-control" id="pd-form-password" placeholder="{:__('Password')}" name="password" autocomplete="off" value="" data-rule="{:__('Password')}:required;password" /> </div> - + {if $config.fastadmin.login_captcha} + <div class="input-group"> + <div class="input-group-addon"><span class="glyphicon glyphicon-option-horizontal" aria-hidden="true"></span></div> + <input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="{:__('Captcha')}:required;length(4)" /> + <span class="input-group-addon" style="padding:0;border:none;"> + <img src="{:captcha_src()}" width="100" height="30" onclick="this.src = '{:captcha_src()}?r=' + Math.random();"/> + </span> + </div> + {/if} <div class="form-group"> <label class="inline" for="keeplogin"> <input type="checkbox" name="keeplogin" id="keeplogin" value="1" /> diff --git a/application/config.php b/application/config.php index 53317fe..4ce4183 100755 --- a/application/config.php +++ b/application/config.php @@ -244,7 +244,14 @@ return [ ], //FastAdmin配置 'fastadmin' => [ - 'version' => '1.0.0.20171026_beta', - 'api_url' => 'http://api.fastadmin.net', + //登录验证码 + 'login_captcha' => false, + //是否同一账号同一时间只能在一个地方登录 + 'login_unique' => false, + //登录页默认背景图 + 'login_background' => "/assets/img/loginbg.jpg", + //版本号 + 'version' => '1.0.0.20171206_beta', + 'api_url' => 'http://api.fastadmin.net', ], ]; diff --git a/public/assets/js/backend/index.js b/public/assets/js/backend/index.js index 1a15b3e..649849d 100755 --- a/public/assets/js/backend/index.js +++ b/public/assets/js/backend/index.js @@ -375,7 +375,7 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'form'], functi if (lastlogin) { lastlogin = JSON.parse(lastlogin); $("#profile-img").attr("src", Backend.api.cdnurl(lastlogin.avatar)); - $("#pd-form-username").val(lastlogin.username); + $("#profile-name").val(lastlogin.username); } //让错误提示框居中 -- libgit2 0.24.0