From b5e83a998c505112e9f6ded9d28388563c6d5c3e Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Tue, 31 Dec 2024 18:05:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/Login.php | 47 +++++++++++++++++++++++++ app/admin/model/v1/UserModel.php | 43 ++++++++++++++++++++++ app/admin/route/v1.php | 27 ++++++++++++++ app/admin/validate/v1/LoginValidate.php | 31 ++++++++++++++++ app/common.php | 33 +++++++++++++++++ config/apiret.php | 22 ++++++++++++ config/cache.php | 16 ++++++++- config/route.php | 2 +- 8 files changed, 219 insertions(+), 2 deletions(-) create mode 100644 app/admin/controller/v1/Login.php create mode 100644 app/admin/model/v1/UserModel.php create mode 100644 app/admin/route/v1.php create mode 100644 app/admin/validate/v1/LoginValidate.php create mode 100644 config/apiret.php diff --git a/app/admin/controller/v1/Login.php b/app/admin/controller/v1/Login.php new file mode 100644 index 00000000..5216d22b --- /dev/null +++ b/app/admin/controller/v1/Login.php @@ -0,0 +1,47 @@ +post([ + 'username', + 'password', + ]); + + // 验证参数 + $validate = new LoginValidate(); + if (!$validate->check($post)) { + return error($validate->getError()); + } + + // 验证用户 + $user = UserModel::usernameOrMobile($post['username'])->find(); + if (!$user) { + return error('用户不存在!'); + } + + // 验证密码 + if ($user['password'] != password_with_salt($post['password'], $user['salt'])) { + return error('密码错误!'); + } + + // 验证用户状态 + if ($user['status'] == -1) { + return error('用户已禁用,请联系管理员!'); + } + dump(session("ss")); + return $user; + } +} diff --git a/app/admin/model/v1/UserModel.php b/app/admin/model/v1/UserModel.php new file mode 100644 index 00000000..fa985510 --- /dev/null +++ b/app/admin/model/v1/UserModel.php @@ -0,0 +1,43 @@ + 'int', + 'username' => 'string', + 'password' => 'string', + 'salt' => 'string', + 'role_id' => 'int', + 'nickname' => 'string', + 'avatar' => 'string', + 'mobile' => 'string', + 'email' => 'string', + 'status' => 'int', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', + ] ; + + // 用户名查询范围 + public function scopeUsernameOrMobile($query, $username) + { + return $query->where('username', '=', $username)->whereOr('mobile', '=', $username); + } +} diff --git a/app/admin/route/v1.php b/app/admin/route/v1.php new file mode 100644 index 00000000..8c3217d1 --- /dev/null +++ b/app/admin/route/v1.php @@ -0,0 +1,27 @@ + +// +---------------------------------------------------------------------- +use think\facade\Route; + +// v1版本路由定义 +Route::group('v1', function () { + // 用户模块 + Route::group('user', function () { + // 获取验证码 + Route::get('captcha', 'Captcha/index'); + + // 登录接口 + Route::post('login', 'Login/index'); + }); +})->prefix('v1.'); + +Route::miss(function() { + return '404 Not Found!'; +}); diff --git a/app/admin/validate/v1/LoginValidate.php b/app/admin/validate/v1/LoginValidate.php new file mode 100644 index 00000000..922c32c1 --- /dev/null +++ b/app/admin/validate/v1/LoginValidate.php @@ -0,0 +1,31 @@ + ['规则1','规则2'...] + * + * @var array + */ + protected $rule = [ + 'username' => 'require', + 'password' => 'require', + ]; + + /** + * 定义错误信息 + * 格式:'字段名.规则名' => '错误信息' + * + * @var array + */ + protected $message = [ + 'username.require' => '用户名不能为空', + 'password.require' => '密码不能为空', + ]; +} diff --git a/app/common.php b/app/common.php index 57cb6d83..730cfc82 100644 --- a/app/common.php +++ b/app/common.php @@ -1,2 +1,35 @@ message($msg)->response($data); + } +} + +// 密码加盐 +if (!function_exists('password_with_salt')) { + function password_with_salt($password, $salt) + { + return md5(hash('sha256', $password . $salt)); + } +} \ No newline at end of file diff --git a/config/apiret.php b/config/apiret.php new file mode 100644 index 00000000..a420f5a2 --- /dev/null +++ b/config/apiret.php @@ -0,0 +1,22 @@ + 'code', + 'message_var' => 'msg', + 'data_var' => 'data', + 'states' => [ + 'success' => [ + 'code' => 0, + 'msg' => '操作成功!', + 'data' => [] + ], + 'error' => [ + 'code' => 1, + 'msg' => '操作错误!', + 'data' => [] + ], + ] +]; diff --git a/config/cache.php b/config/cache.php index 6b72dc89..99470db4 100644 --- a/config/cache.php +++ b/config/cache.php @@ -6,7 +6,7 @@ return [ // 默认缓存驱动 - 'default' => 'file', + 'default' => 'redis', // 缓存连接方式配置 'stores' => [ @@ -25,5 +25,19 @@ return [ 'serialize' => [], ], // 更多的缓存连接 + 'redis' => [ + // 驱动方式 + 'type' => 'redis', + // 服务器地址 + 'host' => '127.0.0.1', + // 端口 + 'port' => 6379, + // 密码 + 'password' => 'orico@f2b211', + // 缓存有效期 0表示永久缓存 + 'expire' => 0, + // 缓存前缀 + 'prefix' => 'ow:', + ] ], ]; diff --git a/config/route.php b/config/route.php index 8ff5eeca..5b07c04e 100644 --- a/config/route.php +++ b/config/route.php @@ -9,7 +9,7 @@ return [ // 是否开启路由延迟解析 'url_lazy_route' => false, // 是否强制使用路由 - 'url_route_must' => false, + 'url_route_must' => true, // 是否区分大小写 'url_case_sensitive' => false, // 合并路由规则