diff --git a/neutrino-proxy-admin/src/api/login.js b/neutrino-proxy-admin/src/api/login.js index a64935c3..151f9830 100644 --- a/neutrino-proxy-admin/src/api/login.js +++ b/neutrino-proxy-admin/src/api/login.js @@ -1,12 +1,12 @@ import request from '@/utils/request' -export function loginByUsername(username, password) { +export function loginByUsername(loginName, loginPassword) { const data = { - username, - password + loginName, + loginPassword } return request({ - url: '/login/login', + url: '/login', method: 'post', data }) @@ -14,7 +14,7 @@ export function loginByUsername(username, password) { export function logout() { return request({ - url: '/login/logout', + url: '/logout', method: 'post' }) } diff --git a/neutrino-proxy-admin/src/api/user.js b/neutrino-proxy-admin/src/api/user.js index a25bf6d5..72ad03df 100644 --- a/neutrino-proxy-admin/src/api/user.js +++ b/neutrino-proxy-admin/src/api/user.js @@ -31,9 +31,17 @@ export function updateUser(data) { }) } +export function currentUserInfo() { + return request({ + url: '/user/info', + method: 'get' + }) +} + export function hello() { return request({ url: '/test1/hello', method: 'GET' }) } + diff --git a/neutrino-proxy-admin/src/mock/index.js b/neutrino-proxy-admin/src/mock/index.js index 85240d05..79d17f10 100644 --- a/neutrino-proxy-admin/src/mock/index.js +++ b/neutrino-proxy-admin/src/mock/index.js @@ -1,5 +1,4 @@ import Mock from 'mockjs' -import loginAPI from './login' import articleAPI from './article' import remoteSearchAPI from './remoteSearch' import transactionAPI from './transaction' @@ -10,9 +9,9 @@ import userAPI from './user' // }) // 登录相关 -Mock.mock(/\/login\/login/, 'post', loginAPI.loginByUsername) -Mock.mock(/\/login\/logout/, 'post', loginAPI.logout) -Mock.mock(/\/user\/info\.*/, 'get', loginAPI.getUserInfo) +// Mock.mock(/\/login\/login/, 'post', loginAPI.loginByUsername) +// Mock.mock(/\/login\/logout/, 'post', loginAPI.logout) +// Mock.mock(/\/user\/info\.*/, 'get', loginAPI.getUserInfo) // 文章相关 Mock.mock(/\/article\/list/, 'get', articleAPI.getList) diff --git a/neutrino-proxy-admin/src/permission.js b/neutrino-proxy-admin/src/permission.js index 87a591e5..bc7e700d 100644 --- a/neutrino-proxy-admin/src/permission.js +++ b/neutrino-proxy-admin/src/permission.js @@ -26,7 +26,7 @@ router.beforeEach((to, from, next) => { } else { if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息 store.dispatch('GetUserInfo').then(res => { // 拉取user_info - const roles = res.data.roles // note: roles must be a array! such as: ['editor','develop'] + const roles = [res.data.data.loginName] // note: roles must be a array! such as: ['editor','develop'] store.dispatch('GenerateRoutes', { roles }).then(() => { // 根据roles权限生成可访问的路由表 router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表 next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record diff --git a/neutrino-proxy-admin/src/store/modules/user.js b/neutrino-proxy-admin/src/store/modules/user.js index 18c93570..7a6f7511 100644 --- a/neutrino-proxy-admin/src/store/modules/user.js +++ b/neutrino-proxy-admin/src/store/modules/user.js @@ -1,4 +1,5 @@ import { loginByUsername, logout, getUserInfo } from '@/api/login' +import { currentUserInfo } from '@/api/user' import { getToken, setToken, removeToken } from '@/utils/auth' const user = { @@ -49,10 +50,9 @@ const user = { const username = userInfo.username.trim() return new Promise((resolve, reject) => { loginByUsername(username, userInfo.password).then(response => { - const data = response.data - commit('SET_TOKEN', data.token) - setToken(response.data.token) - resolve() + commit('SET_TOKEN', response.data.data.token) + setToken(response.data.data.token) + resolve(response) }).catch(error => { reject(error) }) @@ -62,15 +62,12 @@ const user = { // 获取用户信息 GetUserInfo({ commit, state }) { return new Promise((resolve, reject) => { - getUserInfo(state.token).then(response => { + currentUserInfo(state.token).then(response => { if (!response.data) { // 由于mockjs 不支持自定义状态码只能这样hack reject('error') } - const data = response.data - commit('SET_ROLES', data.roles) - commit('SET_NAME', data.name) - commit('SET_AVATAR', data.avatar) - commit('SET_INTRODUCTION', data.introduction) + commit('SET_ROLES', [response.data.data.loginName]) + commit('SET_NAME', response.data.data.name) resolve(response) }).catch(error => { reject(error) diff --git a/neutrino-proxy-admin/src/utils/auth.js b/neutrino-proxy-admin/src/utils/auth.js index 08a43d6e..853a1ff1 100644 --- a/neutrino-proxy-admin/src/utils/auth.js +++ b/neutrino-proxy-admin/src/utils/auth.js @@ -1,6 +1,6 @@ import Cookies from 'js-cookie' - -const TokenKey = 'Admin-Token' +window.Cookies = Cookies +const TokenKey = 'UserToken' export function getToken() { return Cookies.get(TokenKey) diff --git a/neutrino-proxy-admin/src/utils/request.js b/neutrino-proxy-admin/src/utils/request.js index eb70b363..a9346e28 100644 --- a/neutrino-proxy-admin/src/utils/request.js +++ b/neutrino-proxy-admin/src/utils/request.js @@ -13,7 +13,7 @@ const service = axios.create({ service.interceptors.request.use(config => { // Do something before request is sent if (store.getters.token) { - config.headers['X-Token'] = getToken() // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改 + config.headers['Authorize'] = getToken() // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改 } return config }, error => { @@ -24,7 +24,14 @@ service.interceptors.request.use(config => { // respone interceptor service.interceptors.response.use( - response => response, + response => { + console.log('response', response) + const res = response.data + if (res.code !== 0) { + console.log('请求异常', response) + } + return response + }, /** * 下面的注释为通过response自定义code来标示请求状态,当code返回如下情况为权限有问题,登出并返回到登录页 * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中 diff --git a/neutrino-proxy-admin/src/utils/validate.js b/neutrino-proxy-admin/src/utils/validate.js index 5bdd1b43..378cfc82 100644 --- a/neutrino-proxy-admin/src/utils/validate.js +++ b/neutrino-proxy-admin/src/utils/validate.js @@ -3,8 +3,7 @@ */ export function isvalidUsername(str) { - const valid_map = ['admin', 'editor'] - return valid_map.indexOf(str.trim()) >= 0 + return str && str.length > 3 } /* 合法uri*/ diff --git a/neutrino-proxy-admin/src/views/login/index.vue b/neutrino-proxy-admin/src/views/login/index.vue index df761c74..81db5afe 100644 --- a/neutrino-proxy-admin/src/views/login/index.vue +++ b/neutrino-proxy-admin/src/views/login/index.vue @@ -8,14 +8,14 @@ - + - + @@ -24,7 +24,7 @@ {{$t('login.logIn')}}
- {{$t('login.username')}} : admin + {{$t('login.username')}} : visitor {{$t('login.password')}} : 123456
@@ -36,7 +36,6 @@ import { isvalidUsername } from '@/utils/validate' import LangSelect from '@/components/LangSelect' import SocialSign from './socialsignin' -import { login } from '@/api/system' export default { components: { LangSelect, SocialSign }, @@ -44,21 +43,21 @@ export default { data() { const validateUsername = (rule, value, callback) => { if (!isvalidUsername(value)) { - callback(new Error('Please enter the correct user name')) + callback(new Error('请输入用户名')) } else { callback() } } const validatePassword = (rule, value, callback) => { if (value.length < 6) { - callback(new Error('The password can not be less than 6 digits')) + callback(new Error('密码不能少于6位')) } else { callback() } } return { loginForm: { - username: 'admin', + username: 'visitor', password: '123456' }, loginRules: { @@ -82,16 +81,11 @@ export default { this.$refs.loginForm.validate(valid => { if (valid) { this.loading = true - login({ - loginName: this.loginForm.username, - loginPassword: this.loginForm.password - }).then(() => { - this.$store.dispatch('LoginByUsername', this.loginForm).then(() => { - this.loading = false - this.$router.push({ path: '/' }) - }).catch(() => { - this.loading = false - }) + this.$store.dispatch('LoginByUsername', this.loginForm).then(() => { + this.loading = false + this.$router.push({ path: '/' }) + }).catch(() => { + this.loading = false }) } else { console.log('error submit!!') diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserController.java index f18a6033..6097d59c 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserController.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserController.java @@ -28,7 +28,9 @@ import fun.asgc.neutrino.core.db.page.PageQuery; import fun.asgc.neutrino.core.web.annotation.GetMapping; import fun.asgc.neutrino.core.web.annotation.RequestMapping; import fun.asgc.neutrino.core.web.annotation.RestController; +import fun.asgc.neutrino.proxy.server.controller.req.UserInfoReq; import fun.asgc.neutrino.proxy.server.controller.req.UserListReq; +import fun.asgc.neutrino.proxy.server.controller.res.UserInfoRes; import fun.asgc.neutrino.proxy.server.controller.res.UserListRes; import fun.asgc.neutrino.proxy.server.service.UserService; import fun.asgc.neutrino.proxy.server.util.ParamCheckUtil; @@ -59,4 +61,9 @@ public class UserController { return userService.list(req); } + + @GetMapping("info") + public UserInfoRes info() { + return userService.info(); + } } diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/req/UserInfoReq.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/req/UserInfoReq.java new file mode 100644 index 00000000..a5390a17 --- /dev/null +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/req/UserInfoReq.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2022 aoshiguchen + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package fun.asgc.neutrino.proxy.server.controller.req; + +/** + * 用户信息请求 + * @author: wen.y + * @date: 2022/8/27 + */ +public class UserInfoReq { +} diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/res/UserInfoRes.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/res/UserInfoRes.java new file mode 100644 index 00000000..83dd1a26 --- /dev/null +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/res/UserInfoRes.java @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2022 aoshiguchen + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package fun.asgc.neutrino.proxy.server.controller.res; + +import fun.asgc.neutrino.core.db.annotation.Id; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * 用户信息响应 + * @author: wen.y + * @date: 2022/8/27 + */ +@Accessors(chain = true) +@Data +public class UserInfoRes { + private Integer id; + /** + * 用户名 + */ + private String name; + /** + * 登录名 + */ + private String loginName; + /** + * 创建时间 + */ + private Date createTime; + /** + * 更新时间 + */ + private Date updateTime; +} diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java index 8b9c337d..668311b7 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java @@ -35,6 +35,7 @@ import fun.asgc.neutrino.proxy.server.controller.req.LoginReq; import fun.asgc.neutrino.proxy.server.controller.req.UserListReq; import fun.asgc.neutrino.proxy.server.controller.res.LicenseListRes; import fun.asgc.neutrino.proxy.server.controller.res.LoginRes; +import fun.asgc.neutrino.proxy.server.controller.res.UserInfoRes; import fun.asgc.neutrino.proxy.server.controller.res.UserListRes; import fun.asgc.neutrino.proxy.server.dal.UserLoginRecordMapper; import fun.asgc.neutrino.proxy.server.dal.UserMapper; @@ -136,4 +137,17 @@ public class UserService { List list = userMapper.list(); return list; } + + public UserInfoRes info() { + UserDO userDO = userMapper.findById(SystemContextHolder.getUser().getId()); + if (null == userDO) { + return null; + } + return new UserInfoRes() + .setId(userDO.getId()) + .setName(userDO.getName()) + .setLoginName(userDO.getLoginName()) + .setCreateTime(userDO.getCreateTime()) + .setUpdateTime(userDO.getUpdateTime()); + } }