From 368dea2229953816494a74b8b95348a09da933b6 Mon Sep 17 00:00:00 2001 From: Odboy Date: Sun, 4 Feb 2024 19:40:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E9=80=9A=E7=99=BB=E9=99=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/system/domain/user.go | 2 + src/modules/system/rest/auth.go | 7 +++- web/.env | 3 -- web/.env.daily | 2 +- web/.env.development | 3 ++ web/.env.production | 2 +- web/.env.staging | 2 +- web/README.zh.md | 5 +++ web/src/api/modules/sys.user.api.js | 31 --------------- web/src/api/modules/system.user.api.js | 14 +++++++ web/src/api/service.js | 39 +++++++++++++------ .../store/modules/d2admin/modules/account.js | 4 ++ 12 files changed, 65 insertions(+), 49 deletions(-) delete mode 100644 web/src/api/modules/sys.user.api.js create mode 100644 web/src/api/modules/system.user.api.js diff --git a/src/modules/system/domain/user.go b/src/modules/system/domain/user.go index 561fcc8..8e7eae5 100644 --- a/src/modules/system/domain/user.go +++ b/src/modules/system/domain/user.go @@ -6,6 +6,8 @@ type User struct { gorm.Model Username string Password string + Uuid string + Name string } func (User) TableName() string { diff --git a/src/modules/system/rest/auth.go b/src/modules/system/rest/auth.go index 97b6896..cb0efe8 100644 --- a/src/modules/system/rest/auth.go +++ b/src/modules/system/rest/auth.go @@ -40,7 +40,12 @@ func (AuthController) Login(c *gin.Context) { token := jwt.GenToken(json.Username) redistool.Set(rediskey.AUTH_TOKEN+":"+json.Username, token, time.Hour*20) context.SetUser(c, user) - c.JSON(http.StatusOK, resp.Success(token)) + c.JSON(http.StatusOK, resp.Success(map[string]string{ + "username": user.Username, + "uuid": user.Uuid, + "name": user.Name, + "token": token, + })) } // Logout 退出 diff --git a/web/.env b/web/.env index 756b2e9..913fe9b 100644 --- a/web/.env +++ b/web/.env @@ -3,9 +3,6 @@ # 页面 title 前缀 VUE_APP_TITLE=D2Admin -# 网络请求公用地址 -VUE_APP_API=/api/ - ; # 仓库地址 ; VUE_APP_REPO=https://github.com/d2-projects/d2-admin-start-kit diff --git a/web/.env.daily b/web/.env.daily index be84fb1..bbc58da 100644 --- a/web/.env.daily +++ b/web/.env.daily @@ -7,7 +7,7 @@ NODE_ENV=production VUE_APP_TITLE=D2Admin # 网络请求公用地址 -VUE_APP_API=http://localhost:8001/api +VUE_APP_API=http://localhost:8001 # 国际化配置 VUE_APP_I18N_LOCALE=zh-chs diff --git a/web/.env.development b/web/.env.development index 1ec1580..0bae95c 100644 --- a/web/.env.development +++ b/web/.env.development @@ -2,3 +2,6 @@ # 页面 title 前缀 VUE_APP_TITLE=D2Admin + +# 网络请求公用地址 +VUE_APP_API=http://localhost:8001 diff --git a/web/.env.production b/web/.env.production index 4c2beb7..51ff667 100644 --- a/web/.env.production +++ b/web/.env.production @@ -4,7 +4,7 @@ VUE_APP_TITLE=D2Admin # 网络请求公用地址 -VUE_APP_API=/api/ +VUE_APP_API=http://localhost:8001 # 国际化配置 VUE_APP_I18N_LOCALE=zh-chs diff --git a/web/.env.staging b/web/.env.staging index 4111f06..53010a1 100644 --- a/web/.env.staging +++ b/web/.env.staging @@ -7,7 +7,7 @@ NODE_ENV=production VUE_APP_TITLE=D2Admin # 网络请求公用地址 -VUE_APP_API=/api/ +VUE_APP_API=http://localhost:8001 # 国际化配置 VUE_APP_I18N_LOCALE=zh-chs diff --git a/web/README.zh.md b/web/README.zh.md index e245412..418560d 100644 --- a/web/README.zh.md +++ b/web/README.zh.md @@ -86,4 +86,9 @@ import { mapActions } from 'vuex' this.login() ``` +### 请求带token关键代码 +```text +web/src/api/service.js +``` + diff --git a/web/src/api/modules/sys.user.api.js b/web/src/api/modules/sys.user.api.js deleted file mode 100644 index bcea5ba..0000000 --- a/web/src/api/modules/sys.user.api.js +++ /dev/null @@ -1,31 +0,0 @@ -import { find, assign } from 'lodash' - -const users = [ - { username: 'admin', password: 'admin', uuid: 'admin-uuid', name: 'Admin' }, - { username: 'editor', password: 'editor', uuid: 'editor-uuid', name: 'Editor' }, - { username: 'user1', password: 'user1', uuid: 'user1-uuid', name: 'User1' } -] - -export default ({ service, request, serviceForMock, requestForMock, mock, faker, tools }) => ({ - /** - * @description 登录 - * @param {Object} data 登录携带的信息 - */ - SYS_USER_LOGIN (data = {}) { - // 模拟数据 - mock - .onAny('/login') - .reply(config => { - const user = find(users, tools.parse(config.data)) - return user - ? tools.responseSuccess(assign({}, user, { token: faker.random.uuid() })) - : tools.responseError({}, '账号或密码不正确') - }) - // 接口请求 - return requestForMock({ - url: '/login', - method: 'post', - data - }) - } -}) diff --git a/web/src/api/modules/system.user.api.js b/web/src/api/modules/system.user.api.js new file mode 100644 index 0000000..1ce8217 --- /dev/null +++ b/web/src/api/modules/system.user.api.js @@ -0,0 +1,14 @@ +export default ({ service, request, tools }) => ({ + /** + * @description 登录 + * @param {Object} data 登录携带的信息 + */ + SYS_USER_LOGIN (data = {}) { + // 接口请求 + return request({ + url: '/login', + method: 'post', + data + }) + } +}) diff --git a/web/src/api/service.js b/web/src/api/service.js index 40d4d3e..f4c1f6e 100644 --- a/web/src/api/service.js +++ b/web/src/api/service.js @@ -25,20 +25,34 @@ function createService () { // dataAxios 是 axios 返回数据中的 data const dataAxios = response.data // 这个状态码是和后端约定的 - const { code } = dataAxios - // 根据 code 进行判断 - if (code === undefined) { + const { errorCode } = dataAxios + // 根据 errorCode 进行判断 + if (errorCode === undefined) { // 如果没有 code 代表这不是项目后端开发的接口 比如可能是 D2Admin 请求最新版本 return dataAxios } else { - // 有 code 代表这是一个后端接口 可以进行进一步的判断 - switch (code) { - case 0: - // [ 示例 ] code === 0 代表没有错误 + // 有 errorCode 代表这是一个后端接口 可以进行进一步的判断 + switch (errorCode) { + case 200: + // [ 示例 ] errorCode === 200 代表没有错误 return dataAxios.data - case 'xxx': - // [ 示例 ] 其它和后台约定的 code - errorCreate(`[ code: xxx ] ${dataAxios.msg}: ${response.config.url}`) + case 10000: + errorCreate(`[ code: 10000 ] ${dataAxios.msg}: ${response.config.url}`) + break + case 10001: + errorCreate(`[ code: 10001 ] ${dataAxios.msg}: ${response.config.url}`) + break + case 10002: + errorCreate(`[ code: 10002 ] ${dataAxios.msg}: ${response.config.url}`) + break + case 10003: + errorCreate(`[ code: 10003 ] ${dataAxios.msg}: ${response.config.url}`) + break + case 10004: + errorCreate(`[ code: 10004 ] ${dataAxios.msg}: ${response.config.url}`) + break + case 10005: + errorCreate(`[ code: 10005 ] ${dataAxios.msg}: ${response.config.url}`) break default: // 不是正确的 code @@ -49,8 +63,11 @@ function createService () { }, error => { const status = get(error, 'response.status') + const data = get(error, 'response.data') + console.log(data) switch (status) { - case 400: error.message = '请求错误'; break + case 400: + error.message = data.msg; break case 401: error.message = '未授权,请登录'; break case 403: error.message = '拒绝访问'; break case 404: error.message = `请求地址出错: ${error.response.config.url}`; break diff --git a/web/src/store/modules/d2admin/modules/account.js b/web/src/store/modules/d2admin/modules/account.js index b6d06cc..b73fc3e 100644 --- a/web/src/store/modules/d2admin/modules/account.js +++ b/web/src/store/modules/d2admin/modules/account.js @@ -24,6 +24,8 @@ export default { // token 代表用户当前登录状态 建议在网络请求中携带 token // 如有必要 token 需要定时更新,默认保存一天 util.cookies.set('uuid', res.uuid) + util.cookies.set('username', res.username) + util.cookies.set('name', res.name) util.cookies.set('token', res.token) // 设置 vuex 用户信息 await dispatch('d2admin/user/set', { name: res.name }, { root: true }) @@ -43,6 +45,8 @@ export default { // 删除cookie util.cookies.remove('token') util.cookies.remove('uuid') + util.cookies.remove('username') + util.cookies.remove('name') // 清空 vuex 用户信息 await dispatch('d2admin/user/set', {}, { root: true }) // 跳转路由