From d2f010d6f15cc683fe399b7d20416e3b74a42cdb Mon Sep 17 00:00:00 2001
From: soul2 <1052986332@qq.com>
Date: Sun, 7 Apr 2024 14:21:08 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=AF=E7=94=A8=E7=99=BB=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/user.js | 17 ++--
src/layout/components/Navbar.vue | 2 +
src/permission.js | 128 +++++++++++++++----------------
src/store/modules/user.js | 57 +++++++-------
src/utils/auth.js | 2 +-
src/utils/request.js | 13 ++--
src/views/login/index.vue | 25 +++---
src/views/subject/edit.vue | 2 +-
8 files changed, 122 insertions(+), 124 deletions(-)
diff --git a/src/api/user.js b/src/api/user.js
index 8ff4389..b93f25a 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -2,23 +2,16 @@ import request from '@/utils/request'
export function login(data) {
return request({
- url: '/vue-admin-template/user/login',
+ url: '/user/login',
method: 'post',
data
})
}
-export function getInfo(token) {
+export function logout(data) {
return request({
- url: '/vue-admin-template/user/info',
- method: 'get',
- params: { token }
- })
-}
-
-export function logout() {
- return request({
- url: '/vue-admin-template/user/logout',
- method: 'post'
+ url: '/user/logout',
+ method: 'post',
+ data
})
}
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index dce6207..ded83e1 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -27,6 +27,7 @@
+ 退出登录
@@ -88,6 +89,7 @@ export default {
float: right;
height: 100%;
line-height: 50px;
+ padding-right: 20px;
&:focus {
outline: none;
diff --git a/src/permission.js b/src/permission.js
index 963621f..fa1ea19 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -1,64 +1,64 @@
-// import router from './router'
-// import store from './store'
-// import { Message } from 'element-ui'
-// import NProgress from 'nprogress' // progress bar
-// import 'nprogress/nprogress.css' // progress bar style
-// import { getToken } from '@/utils/auth' // get token from cookie
-// import getPageTitle from '@/utils/get-page-title'
-//
-// NProgress.configure({ showSpinner: false }) // NProgress Configuration
-//
-// const whiteList = ['/login'] // no redirect whitelist
-//
-// router.beforeEach(async(to, from, next) => {
-// // start progress bar
-// NProgress.start()
-//
-// // set page title
-// document.title = getPageTitle(to.meta.title)
-//
-// // determine whether the user has logged in
-// const hasToken = getToken()
-//
-// if (hasToken) {
-// if (to.path === '/login') {
-// // if is logged in, redirect to the home page
-// next({ path: '/' })
-// NProgress.done()
-// } else {
-// const hasGetUserInfo = store.getters.name
-// if (hasGetUserInfo) {
-// next()
-// } else {
-// try {
-// // get user info
-// await store.dispatch('user/getInfo')
-//
-// next()
-// } catch (error) {
-// // remove token and go to login page to re-login
-// await store.dispatch('user/resetToken')
-// Message.error(error || 'Has Error')
-// next(`/login?redirect=${to.path}`)
-// NProgress.done()
-// }
-// }
-// }
-// } else {
-// /* has no token*/
-//
-// if (whiteList.indexOf(to.path) !== -1) {
-// // in the free login whitelist, go directly
-// next()
-// } else {
-// // other pages that do not have permission to access are redirected to the login page.
-// next(`/login?redirect=${to.path}`)
-// NProgress.done()
-// }
-// }
-// })
-//
-// router.afterEach(() => {
-// // finish progress bar
-// NProgress.done()
-// })
+import router from './router'
+import store from './store'
+import { Message } from 'element-ui'
+import NProgress from 'nprogress' // progress bar
+import 'nprogress/nprogress.css' // progress bar style
+import { getToken } from '@/utils/auth' // get token from cookie
+import getPageTitle from '@/utils/get-page-title'
+
+NProgress.configure({ showSpinner: false }) // NProgress Configuration
+
+const whiteList = ['/login'] // no redirect whitelist
+
+router.beforeEach(async(to, from, next) => {
+ // start progress bar
+ NProgress.start()
+
+ // set page title
+ document.title = getPageTitle(to.meta.title)
+
+ // determine whether the user has logged in
+ const hasToken = getToken()
+
+ if (hasToken) {
+ if (to.path === '/login') {
+ // if is logged in, redirect to the home page
+ next({ path: '/' })
+ NProgress.done()
+ } else {
+ const hasGetUserInfo = store.getters.name
+ if (hasGetUserInfo) {
+ next()
+ } else {
+ try {
+ // get user info
+ await store.dispatch('user/getInfo')
+
+ next()
+ } catch (error) {
+ // remove token and go to login page to re-login
+ await store.dispatch('user/resetToken')
+ Message.error(error || 'Has Error')
+ next(`/login?redirect=${to.path}`)
+ NProgress.done()
+ }
+ }
+ }
+ } else {
+ /* has no token*/
+
+ if (whiteList.indexOf(to.path) !== -1) {
+ // in the free login whitelist, go directly
+ next()
+ } else {
+ // other pages that do not have permission to access are redirected to the login page.
+ next(`/login?redirect=${to.path}`)
+ NProgress.done()
+ }
+ }
+})
+
+router.afterEach(() => {
+ // finish progress bar
+ NProgress.done()
+})
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index d13cc6a..5f50ba4 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,12 +1,11 @@
-import { getInfo, login, logout } from '@/api/user'
+import { login, logout } from '@/api/user'
import { getToken, removeToken, setToken } from '@/utils/auth'
import { resetRouter } from '@/router'
const getDefaultState = () => {
return {
token: getToken(),
- name: '',
- avatar: ''
+ info: {}
}
}
@@ -19,11 +18,8 @@ const mutations = {
SET_TOKEN: (state, token) => {
state.token = token
},
- SET_NAME: (state, name) => {
- state.name = name
- },
- SET_AVATAR: (state, avatar) => {
- state.avatar = avatar
+ SET_INFO: (state, info) => {
+ state.info = info
}
}
@@ -34,40 +30,39 @@ const actions = {
return new Promise((resolve, reject) => {
login({ username: username.trim(), password: password }).then(response => {
const { data } = response
- commit('SET_TOKEN', data.token)
- setToken(data.token)
- resolve()
+ // console.log('data -> ', data)
+ if (data.loginFail == null) {
+ if (data.status === 0) {
+ commit('SET_TOKEN', data.token)
+ setToken(data.token)
+ commit('SET_INFO', data)
+ resolve()
+ } else {
+ if (data.status === 4) {
+ reject('该用户账号已被封禁!')
+ } else if (data.status === 9) {
+ reject('该用户账号异常!')
+ } else {
+ reject(data.loginFail)
+ }
+ }
+ } else {
+ reject(data.loginFail)
+ }
}).catch(error => {
reject(error)
})
})
},
- // get user info
- getInfo({ commit, state }) {
- return new Promise((resolve, reject) => {
- getInfo(state.token).then(response => {
- const { data } = response
-
- if (!data) {
- return reject('Verification failed, please Login again.')
- }
-
- const { name, avatar } = data
-
- commit('SET_NAME', name)
- commit('SET_AVATAR', avatar)
- resolve(data)
- }).catch(error => {
- reject(error)
- })
- })
+ getInfo({ state }) {
+ return state.info
},
// user logout
logout({ commit, state }) {
return new Promise((resolve, reject) => {
- logout(state.token).then(() => {
+ logout({ token: state.token }).then(() => {
removeToken() // must remove token first
resetRouter()
commit('RESET_STATE')
diff --git a/src/utils/auth.js b/src/utils/auth.js
index 059af18..11b013b 100644
--- a/src/utils/auth.js
+++ b/src/utils/auth.js
@@ -1,6 +1,6 @@
import Cookies from 'js-cookie'
-const TokenKey = 'vue_admin_template_token'
+const TokenKey = 'jyjc_admin_token'
export function getToken() {
return Cookies.get(TokenKey)
diff --git a/src/utils/request.js b/src/utils/request.js
index 0c4ecc2..5b00268 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -1,6 +1,7 @@
import axios from 'axios'
import { Message, MessageBox } from 'element-ui'
import store from '@/store'
+import { getToken } from '@/utils/auth'
// create an axios instance
const service = axios.create({
@@ -18,12 +19,12 @@ service.interceptors.request.use(
config => {
// do something before request is sent
- // if (store.getters.token) {
- // // let each request carry token
- // // ['X-Token'] is a custom headers key
- // // please modify it according to the actual situation
- // config.headers['X-Token'] = getToken()
- // }
+ if (store.getters.token) {
+ // let each request carry token
+ // ['X-Token'] is a custom headers key
+ // please modify it according to the actual situation
+ config.headers['jyjc-Token'] = getToken()
+ }
return config
},
error => {
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 83b5be6..23ce19d 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -48,10 +48,10 @@
>Login
-
- username: admin
- password: any
-
+
+
+
+
@@ -64,7 +64,7 @@ export default {
name: 'Login',
data() {
const validateUsername = (rule, value, callback) => {
- if (!validUsername(value)) {
+ if (false || !validUsername(value)) {
callback(new Error('Please enter the correct user name'))
} else {
callback()
@@ -80,11 +80,17 @@ export default {
return {
loginForm: {
username: 'admin',
- password: '111111'
+ password: '123456'
},
loginRules: {
- username: [{ required: true, trigger: 'blur', validator: validateUsername }],
- password: [{ required: true, trigger: 'blur', validator: validatePassword }]
+ username: [{
+ required: true, trigger: 'blur'
+ // validator: validateUsername
+ }],
+ password: [{
+ required: true, trigger: 'blur'
+ // validator: validatePassword
+ }]
},
loading: false,
passwordType: 'password',
@@ -117,8 +123,9 @@ export default {
this.$store.dispatch('user/login', this.loginForm).then(() => {
this.$router.push({ path: this.redirect || '/' })
this.loading = false
- }).catch(() => {
+ }).catch((failMessage) => {
this.loading = false
+ this.$message.error(failMessage)
})
} else {
console.log('error submit!!')
diff --git a/src/views/subject/edit.vue b/src/views/subject/edit.vue
index c15b770..4745bba 100644
--- a/src/views/subject/edit.vue
+++ b/src/views/subject/edit.vue
@@ -125,7 +125,7 @@ export default {
// console.log(this.edit)
items({ id: this.row.id }).then(r => {
this.edit.items = r.data.items
- // console.log('edit.items -> ', this.edit.items)
+ console.log('edit.items -> ', this.edit.items)
})
}
},