diff --git a/application/admin/controller/Login.php b/application/admin/controller/Login.php index fa24db16a..76ebf256c 100644 --- a/application/admin/controller/Login.php +++ b/application/admin/controller/Login.php @@ -15,6 +15,7 @@ namespace app\admin\controller; +use app\admin\service\CaptchaService; use app\admin\service\NodeService; use library\Controller; use think\Db; @@ -46,6 +47,7 @@ class Login extends Controller $this->domain = Request::host(true); if (!($this->loginskey = session('loginskey'))) session('loginskey', $this->loginskey = uniqid()); $this->devmode = in_array($this->domain, ['127.0.0.1', 'localhost']) || is_numeric(stripos($this->domain, 'thinkadmin.top')); + $this->captcha = new CaptchaService(); $this->fetch(); } } else { @@ -59,40 +61,19 @@ class Login extends Controller 'username.min' => '登录账号长度不能少于4位有效字符!', 'password.min' => '登录密码长度不能少于4位有效字符!', ]); + if (!CaptchaService::check(input('verify'), input('uniqid'))) { + $this->error('图形验证码验证失败,请重新输入!'); + } // 用户信息验证 $map = ['is_deleted' => '0', 'username' => $data['username']]; $user = Db::name('SystemUser')->where($map)->order('id desc')->find(); if (empty($user)) $this->error('登录账号或密码错误,请重新输入!'); - if (empty($user['status'])) $this->error('账号已经被禁用,请联系管理员!'); - // 账号锁定消息 - $cache = cache("user_login_{$user['username']}"); - if (is_array($cache) && !empty($cache['number']) && !empty($cache['time'])) { - if ($cache['number'] >= 10 && ($diff = $cache['time'] + 3600 - time()) > 0) { - list($m, $s, $info) = [floor($diff / 60), floor($diff % 60), '']; - if ($m > 0) $info = "{$m} 分"; - $this->error("抱歉,该账号已经被锁定!

连续 10 次登录错误,请 {$info} {$s} 秒后再登录!

"); - } - } if (md5($user['password'] . session('loginskey')) !== $data['password']) { - if (empty($cache) || empty($cache['time']) || empty($cache['number']) || $cache['time'] + 3600 < time()) { - $cache = ['time' => time(), 'number' => 1, 'geoip' => $this->request->ip()]; - } elseif ($cache['number'] + 1 <= 10) { - $cache = ['time' => time(), 'number' => $cache['number'] + 1, 'geoip' => $this->request->ip()]; - } - cache("user_login_{$user['username']}", $cache); - if (($diff = 10 - $cache['number']) > 0) { - $this->error("登录账号或密码错误!

还有 {$diff} 次尝试机会,将锁定一小时内禁止登录!

"); - } else { - sysoplog('系统管理', "账号{$user['username']}连续10次登录密码错误,请注意账号安全!"); - $this->error("登录账号或密码错误!

尝试次数达到上限,锁定一小时内禁止登录!

"); - } + $this->error('登录账号或密码错误,请重新输入!'); } - // 登录成功并更新账号 - cache("user_login_{$user['username']}", null); + if (empty($user['status'])) $this->error('账号已经被禁用,请联系管理员!'); Db::name('SystemUser')->where(['id' => $user['id']])->update([ - 'login_at' => Db::raw('now()'), - 'login_ip' => $this->request->ip(), - 'login_num' => Db::raw('login_num+1'), + 'login_at' => Db::raw('now()'), 'login_ip' => Request::ip(), 'login_num' => Db::raw('login_num+1'), ]); session('loginskey', null); session('admin_user', $user); diff --git a/application/admin/service/CaptchaService.php b/application/admin/service/CaptchaService.php new file mode 100644 index 000000000..f8bd8e6d3 --- /dev/null +++ b/application/admin/service/CaptchaService.php @@ -0,0 +1,146 @@ + $v) if (isset($this->$k)) $this->$k = $v; + // 设置字体文件路径 + $this->font = __DIR__ . '/font/icon.ttf'; + // 生成验证码序号 + $this->uniqid = uniqid('captcha'); + // 生成验证码字符串 + $_len = strlen($this->charset) - 1; + for ($i = 0; $i < $this->codelen; $i++) { + $this->code .= $this->charset[mt_rand(0, $_len)]; + } + // 缓存验证码字符串 + Cache::tag('captcha')->set($this->uniqid, $this->code, 360); + p([$this->uniqid, $this->code]); + } + + /** + * 创建验证码图片 + * @return string + */ + private function createImage() + { + // 生成背景 + $this->img = imagecreatetruecolor($this->width, $this->height); + $color = imagecolorallocate($this->img, mt_rand(220, 255), mt_rand(220, 255), mt_rand(220, 255)); + imagefilledrectangle($this->img, 0, $this->height, $this->width, 0, $color); + // 线条 + for ($i = 0; $i < 6; $i++) { + $color = imagecolorallocate($this->img, mt_rand(0, 50), mt_rand(0, 50), mt_rand(0, 50)); + imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $color); + } + // 雪花 + for ($i = 0; $i < 100; $i++) { + $color = imagecolorallocate($this->img, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255)); + imagestring($this->img, mt_rand(1, 5), mt_rand(0, $this->width), mt_rand(0, $this->height), '*', $color); + } + // 生成文字 + $_x = $this->width / $this->codelen; + for ($i = 0; $i < $this->codelen; $i++) { + $this->fontcolor = imagecolorallocate($this->img, mt_rand(0, 156), mt_rand(0, 156), mt_rand(0, 156)); + imagettftext($this->img, $this->fontsize, mt_rand(-30, 30), $_x * $i + mt_rand(1, 5), $this->height / 1.4, $this->fontcolor, $this->font, $this->code[$i]); + } + ob_start(); + imagepng($this->img); + $data = ob_get_contents(); + ob_end_clean(); + imagedestroy($this->img); + return base64_encode($data); + } + + /** + * 获取验证码 + * @return array + */ + public function getAttr() + { + return ['code' => $this->code, 'uniq' => $this->uniqid, 'data' => $this->getData()]; + } + + /** + * 获取验证码值 + * @return string + */ + public function getCode() + { + return $this->code; + } + + /** + * 获取图片内容 + * @return string + */ + public function getData() + { + return "data:image/png;base64,{$this->createImage()}"; + } + + /** + * 获取验证码编号 + * @return string + */ + public function getUniqid() + { + return $this->uniqid; + } + + /** + * 检查验证码是否正确 + * @param string $code 需要验证的值 + * @param string $uniqid 验证码编号 + * @return boolean + */ + public static function check($code, $uniqid = null) + { + $_uni = is_string($uniqid) ? $uniqid : input('uniqid', '-'); + $_ver = Cache::tag('captcha')->get($_uni); + if (is_string($_ver) && strtolower($_ver) === strtolower($code)) { + Cache::tag('captcha')->rm($_uni); + return true; + } else return false; + } +} diff --git a/application/admin/service/font/icon.ttf b/application/admin/service/font/icon.ttf new file mode 100644 index 000000000..54a14ed1c Binary files /dev/null and b/application/admin/service/font/icon.ttf differ diff --git a/application/admin/sys.php b/application/admin/sys.php index fea25fef9..7272efbd8 100644 --- a/application/admin/sys.php +++ b/application/admin/sys.php @@ -13,12 +13,14 @@ // | github 代码仓库:https://github.com/zoujingli/ThinkAdmin // +---------------------------------------------------------------------- +use app\admin\service\CaptchaService; use app\admin\service\NodeService; use app\admin\service\OplogService; use library\File; use think\Console; use think\Db; use think\facade\Middleware; +use think\facade\Route; use think\Request; if (!function_exists('auth')) { @@ -156,3 +158,9 @@ Console::addDefaultCommands([ 'app\admin\queue\task\Query', 'app\admin\queue\task\Listen', ]); + +// ThinkAdmin 图形验证码 +Route::get('/think/admin/captcha', function () { + $image = new CaptchaService(); + return json(['uniqid' => $image->getUniqid(), 'image' => $image->getData()]); +}); \ No newline at end of file diff --git a/application/admin/view/login/index.html b/application/admin/view/login/index.html index c8461b4cd..b5031dfe6 100644 --- a/application/admin/view/login/index.html +++ b/application/admin/view/login/index.html @@ -16,15 +16,23 @@
  • +
  • + + img + +
  • diff --git a/composer.json b/composer.json index cff468af2..a29311e1f 100644 --- a/composer.json +++ b/composer.json @@ -10,6 +10,7 @@ ], "require": { "php": ">=5.6", + "ext-gd": "*", "ext-curl": "*", "ext-json": "*", "ext-soap": "*", diff --git a/public/static/admin.js b/public/static/admin.js index 495b51fe4..6ab481f4c 100644 --- a/public/static/admin.js +++ b/public/static/admin.js @@ -747,16 +747,35 @@ $(function () { }); /*! 后台加密登录处理 */ - $body.find('[data-login-form]').map(function () { + $body.find('[data-login-form]').map(function (that) { + that = this; require(["md5"], function (md5) { $("form").vali(function (data) { data['password'] = md5.hash(md5.hash(data['password']) + data['skey']); if (data['skey']) delete data['skey']; - $.form.load(location.href, data, "post", null, null, null, 'false'); + $.form.load(location.href, data, "post", function (ret) { + if (parseInt(ret.code) !== 1) { + $(that).find('[name=verify]').val(''); + $(that).find('.verify.layui-hide').removeClass('layui-hide'); + $(that).find('[data-refresh-captcha]').trigger('click'); + } + }, null, null, 'false'); }); }); }); + /*! 后台图形验证码刷新 */ + $body.on('click', '[data-refresh-captcha]', function (image, verify, uniqid) { + image = this, uniqid = this.getAttribute('data-uniqid-field') || 'uniqid'; + verify = this.getAttribute('data-refresh-captcha') || this.getAttribute('data-verify-field') || 'verify'; + $.form.load('?s=think/admin/captcha', {}, 'get', function (ret) { + image.src = ret.image; + $(image).parents('form').find('[name=' + verify + ']').val(''); + $(image).parents('form').find('[name=' + uniqid + ']').val(ret.uniqid); + return false; + }, false); + }); + /*! 图片加载异常处理 */ document.addEventListener('error', function (e, elem) { elem = e.target; diff --git a/public/static/theme/css/login.css b/public/static/theme/css/login.css index f02acda6a..d02817adc 100644 --- a/public/static/theme/css/login.css +++ b/public/static/theme/css/login.css @@ -64,6 +64,21 @@ body { margin-top: 20px; text-shadow: #000 0.1em 0.1em 0.1em; } +.login-container form ul li.verify label { + width: 200px; +} +.login-container form ul li.verify input.layui-input { + text-transform: uppercase; +} +.login-container form ul li.verify img { + width: 95px; + height: 44px; + cursor: pointer; + position: absolute; + margin-left: 5px; + border-radius: 5px; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1); +} .login-container form ul li i.layui-icon { color: #fff; font-size: 18px; diff --git a/public/static/theme/css/login.css.map b/public/static/theme/css/login.css.map index 2caebbbf1..b3793e5ac 100644 --- a/public/static/theme/css/login.css.map +++ b/public/static/theme/css/login.css.map @@ -1 +1 @@ -{"version":3,"sources":["login.less"],"names":[],"mappings":"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","file":"login.css"} \ No newline at end of file +{"version":3,"sources":["login.less"],"names":[],"mappings":"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","file":"login.css"} \ No newline at end of file diff --git a/public/static/theme/css/login.less b/public/static/theme/css/login.less index eafd2d419..84b9b225a 100644 --- a/public/static/theme/css/login.less +++ b/public/static/theme/css/login.less @@ -85,6 +85,26 @@ body { margin-top: 20px; text-shadow: #000 .1em .1em .1em; + &.verify { + label { + width: 200px; + } + + input.layui-input { + text-transform: uppercase + } + + img { + width: 95px; + height: 44px; + cursor: pointer; + position: absolute; + margin-left: 5px; + border-radius: 5px; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1); + } + } + i.layui-icon { color: #fff; font-size: 18px; diff --git a/vendor/autoload.php b/vendor/autoload.php index 85197121d..163fb58b2 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit415d1b9a7b2ee3822de734e6cbe4a804::getLoader(); +return ComposerAutoloaderInitea9430bef9688db72c38464c06dd4032::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 4555f2fc0..834102d8d 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit415d1b9a7b2ee3822de734e6cbe4a804 +class ComposerAutoloaderInitea9430bef9688db72c38464c06dd4032 { private static $loader; @@ -19,15 +19,15 @@ class ComposerAutoloaderInit415d1b9a7b2ee3822de734e6cbe4a804 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit415d1b9a7b2ee3822de734e6cbe4a804', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitea9430bef9688db72c38464c06dd4032', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit415d1b9a7b2ee3822de734e6cbe4a804', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitea9430bef9688db72c38464c06dd4032', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit415d1b9a7b2ee3822de734e6cbe4a804::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInitea9430bef9688db72c38464c06dd4032::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -48,19 +48,19 @@ class ComposerAutoloaderInit415d1b9a7b2ee3822de734e6cbe4a804 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit415d1b9a7b2ee3822de734e6cbe4a804::$files; + $includeFiles = Composer\Autoload\ComposerStaticInitea9430bef9688db72c38464c06dd4032::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire415d1b9a7b2ee3822de734e6cbe4a804($fileIdentifier, $file); + composerRequireea9430bef9688db72c38464c06dd4032($fileIdentifier, $file); } return $loader; } } -function composerRequire415d1b9a7b2ee3822de734e6cbe4a804($fileIdentifier, $file) +function composerRequireea9430bef9688db72c38464c06dd4032($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 3582c5660..0ecc870a8 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit415d1b9a7b2ee3822de734e6cbe4a804 +class ComposerStaticInitea9430bef9688db72c38464c06dd4032 { public static $files = array ( '841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php', @@ -321,9 +321,9 @@ class ComposerStaticInit415d1b9a7b2ee3822de734e6cbe4a804 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit415d1b9a7b2ee3822de734e6cbe4a804::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit415d1b9a7b2ee3822de734e6cbe4a804::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit415d1b9a7b2ee3822de734e6cbe4a804::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInitea9430bef9688db72c38464c06dd4032::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitea9430bef9688db72c38464c06dd4032::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitea9430bef9688db72c38464c06dd4032::$classMap; }, null, ClassLoader::class); }