启用登录

soul2/encrypt
soul2 1 year ago
parent 20087753cc
commit d2f010d6f1
  1. 17
      src/api/user.js
  2. 2
      src/layout/components/Navbar.vue
  3. 128
      src/permission.js
  4. 57
      src/store/modules/user.js
  5. 2
      src/utils/auth.js
  6. 13
      src/utils/request.js
  7. 25
      src/views/login/index.vue
  8. 2
      src/views/subject/edit.vue

@ -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
})
}

@ -27,6 +27,7 @@
<!-- </el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
<el-button type="text" @click="logout">退出登录</el-button>
</div>
</div>
</template>
@ -88,6 +89,7 @@ export default {
float: right;
height: 100%;
line-height: 50px;
padding-right: 20px;
&:focus {
outline: none;

@ -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()
})

@ -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')

@ -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)

@ -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 => {

@ -48,10 +48,10 @@
>Login
</el-button>
<div class="tips">
<span style="margin-right:20px;">username: admin</span>
<span> password: any</span>
</div>
<!-- <div class="tips">-->
<!-- <span style="margin-right:20px;">username: admin</span>-->
<!-- <span> password: any</span>-->
<!-- </div>-->
</el-form>
</div>
@ -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!!')

@ -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)
})
}
},

Loading…
Cancel
Save