调通登陆
This commit is contained in:
parent
e92cbe180f
commit
368dea2229
|
@ -6,6 +6,8 @@ type User struct {
|
|||
gorm.Model
|
||||
Username string
|
||||
Password string
|
||||
Uuid string
|
||||
Name string
|
||||
}
|
||||
|
||||
func (User) TableName() string {
|
||||
|
|
|
@ -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 退出
|
||||
|
|
3
web/.env
3
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -2,3 +2,6 @@
|
|||
|
||||
# 页面 title 前缀
|
||||
VUE_APP_TITLE=D2Admin
|
||||
|
||||
# 网络请求公用地址
|
||||
VUE_APP_API=http://localhost:8001
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
VUE_APP_TITLE=D2Admin
|
||||
|
||||
# 网络请求公用地址
|
||||
VUE_APP_API=/api/
|
||||
VUE_APP_API=http://localhost:8001
|
||||
|
||||
# 国际化配置
|
||||
VUE_APP_I18N_LOCALE=zh-chs
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -86,4 +86,9 @@ import { mapActions } from 'vuex'
|
|||
this.login()
|
||||
```
|
||||
|
||||
### 请求带token关键代码
|
||||
```text
|
||||
web/src/api/service.js
|
||||
```
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
})
|
||||
}
|
||||
})
|
|
@ -0,0 +1,14 @@
|
|||
export default ({ service, request, tools }) => ({
|
||||
/**
|
||||
* @description 登录
|
||||
* @param {Object} data 登录携带的信息
|
||||
*/
|
||||
SYS_USER_LOGIN (data = {}) {
|
||||
// 接口请求
|
||||
return request({
|
||||
url: '/login',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
})
|
|
@ -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
|
||||
|
|
|
@ -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 })
|
||||
// 跳转路由
|
||||
|
|
Loading…
Reference in New Issue