Login.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\model\system\SystemAdmin;
  4. use crmeb\services\UtilService;
  5. use think\facade\Session;
  6. use think\facade\Route as Url;
  7. /**
  8. * 登录验证控制器
  9. * Class Login
  10. * @package app\admin\controller
  11. */
  12. class Login extends SystemBasic
  13. {
  14. public function index()
  15. {
  16. $this->assign('name', sys_config('site_name', ''));
  17. return $this->fetch();
  18. }
  19. /**
  20. * 登录验证 + 验证码验证
  21. */
  22. public function verify()
  23. {
  24. if (!request()->isPost()) return $this->failed('请登陆!');
  25. list($account, $pwd, $verify) = UtilService::postMore([
  26. 'account', 'pwd', 'verify'
  27. ], null, true);
  28. //检验验证码
  29. if (!captcha_check($verify)) return $this->failed('验证码错误,请重新输入');
  30. $error = Session::get('login_error') ?: ['num' => 0, 'time' => time()];
  31. $error['num'] = 0;
  32. if ($error['num'] >= 5 && $error['time'] > strtotime('- 5 minutes'))
  33. return $this->failed('错误次数过多,请稍候再试!');
  34. //检验帐号密码
  35. $res = SystemAdmin::login($account, $pwd);
  36. if ($res) {
  37. Session::set('login_error', null);
  38. Session::save();
  39. return $this->successful(['url' => Url::buildUrl('Index/index')->build()]);
  40. } else {
  41. $error['num'] += 1;
  42. $error['time'] = time();
  43. Session::set('login_error', $error);
  44. Session::save();
  45. return $this->failed(SystemAdmin::getErrorInfo('用户名错误,请重新输入'));
  46. }
  47. }
  48. public function captcha()
  49. {
  50. ob_clean();
  51. return captcha();
  52. }
  53. /**
  54. * 退出登陆
  55. */
  56. public function logout()
  57. {
  58. SystemAdmin::clearLoginInfo();
  59. $this->redirect(Url::buildUrl('index')->build());
  60. }
  61. }