启用登录

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) { export function login(data) {
return request({ return request({
url: '/vue-admin-template/user/login', url: '/user/login',
method: 'post', method: 'post',
data data
}) })
} }
export function getInfo(token) { export function logout(data) {
return request({ return request({
url: '/vue-admin-template/user/info', url: '/user/logout',
method: 'get', method: 'post',
params: { token } data
})
}
export function logout() {
return request({
url: '/vue-admin-template/user/logout',
method: 'post'
}) })
} }

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

@ -1,64 +1,64 @@
// import router from './router' import router from './router'
// import store from './store' import store from './store'
// import { Message } from 'element-ui' import { Message } from 'element-ui'
// import NProgress from 'nprogress' // progress bar import NProgress from 'nprogress' // progress bar
// import 'nprogress/nprogress.css' // progress bar style import 'nprogress/nprogress.css' // progress bar style
// import { getToken } from '@/utils/auth' // get token from cookie import { getToken } from '@/utils/auth' // get token from cookie
// import getPageTitle from '@/utils/get-page-title' import getPageTitle from '@/utils/get-page-title'
//
// NProgress.configure({ showSpinner: false }) // NProgress Configuration NProgress.configure({ showSpinner: false }) // NProgress Configuration
//
// const whiteList = ['/login'] // no redirect whitelist const whiteList = ['/login'] // no redirect whitelist
//
// router.beforeEach(async(to, from, next) => { router.beforeEach(async(to, from, next) => {
// // start progress bar // start progress bar
// NProgress.start() NProgress.start()
//
// // set page title // set page title
// document.title = getPageTitle(to.meta.title) document.title = getPageTitle(to.meta.title)
//
// // determine whether the user has logged in // determine whether the user has logged in
// const hasToken = getToken() const hasToken = getToken()
//
// if (hasToken) { if (hasToken) {
// if (to.path === '/login') { if (to.path === '/login') {
// // if is logged in, redirect to the home page // if is logged in, redirect to the home page
// next({ path: '/' }) next({ path: '/' })
// NProgress.done() NProgress.done()
// } else { } else {
// const hasGetUserInfo = store.getters.name const hasGetUserInfo = store.getters.name
// if (hasGetUserInfo) { if (hasGetUserInfo) {
// next() next()
// } else { } else {
// try { try {
// // get user info // get user info
// await store.dispatch('user/getInfo') await store.dispatch('user/getInfo')
//
// next() next()
// } catch (error) { } catch (error) {
// // remove token and go to login page to re-login // remove token and go to login page to re-login
// await store.dispatch('user/resetToken') await store.dispatch('user/resetToken')
// Message.error(error || 'Has Error') Message.error(error || 'Has Error')
// next(`/login?redirect=${to.path}`) next(`/login?redirect=${to.path}`)
// NProgress.done() NProgress.done()
// } }
// } }
// } }
// } else { } else {
// /* has no token*/ /* has no token*/
//
// if (whiteList.indexOf(to.path) !== -1) { if (whiteList.indexOf(to.path) !== -1) {
// // in the free login whitelist, go directly // in the free login whitelist, go directly
// next() next()
// } else { } else {
// // other pages that do not have permission to access are redirected to the login page. // other pages that do not have permission to access are redirected to the login page.
// next(`/login?redirect=${to.path}`) next(`/login?redirect=${to.path}`)
// NProgress.done() NProgress.done()
// } }
// } }
// }) })
//
// router.afterEach(() => { router.afterEach(() => {
// // finish progress bar // finish progress bar
// NProgress.done() 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 { getToken, removeToken, setToken } from '@/utils/auth'
import { resetRouter } from '@/router' import { resetRouter } from '@/router'
const getDefaultState = () => { const getDefaultState = () => {
return { return {
token: getToken(), token: getToken(),
name: '', info: {}
avatar: ''
} }
} }
@ -19,11 +18,8 @@ const mutations = {
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token
}, },
SET_NAME: (state, name) => { SET_INFO: (state, info) => {
state.name = name state.info = info
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
} }
} }
@ -34,40 +30,39 @@ const actions = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login({ username: username.trim(), password: password }).then(response => { login({ username: username.trim(), password: password }).then(response => {
const { data } = response const { data } = response
commit('SET_TOKEN', data.token) // console.log('data -> ', data)
setToken(data.token) if (data.loginFail == null) {
resolve() 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 => { }).catch(error => {
reject(error) reject(error)
}) })
}) })
}, },
// get user info getInfo({ state }) {
getInfo({ commit, state }) { return state.info
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)
})
})
}, },
// user logout // user logout
logout({ commit, state }) { logout({ commit, state }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
logout(state.token).then(() => { logout({ token: state.token }).then(() => {
removeToken() // must remove token first removeToken() // must remove token first
resetRouter() resetRouter()
commit('RESET_STATE') commit('RESET_STATE')

@ -1,6 +1,6 @@
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
const TokenKey = 'vue_admin_template_token' const TokenKey = 'jyjc_admin_token'
export function getToken() { export function getToken() {
return Cookies.get(TokenKey) return Cookies.get(TokenKey)

@ -1,6 +1,7 @@
import axios from 'axios' import axios from 'axios'
import { Message, MessageBox } from 'element-ui' import { Message, MessageBox } from 'element-ui'
import store from '@/store' import store from '@/store'
import { getToken } from '@/utils/auth'
// create an axios instance // create an axios instance
const service = axios.create({ const service = axios.create({
@ -18,12 +19,12 @@ service.interceptors.request.use(
config => { config => {
// do something before request is sent // do something before request is sent
// if (store.getters.token) { if (store.getters.token) {
// // let each request carry token // let each request carry token
// // ['X-Token'] is a custom headers key // ['X-Token'] is a custom headers key
// // please modify it according to the actual situation // please modify it according to the actual situation
// config.headers['X-Token'] = getToken() config.headers['jyjc-Token'] = getToken()
// } }
return config return config
}, },
error => { error => {

@ -48,10 +48,10 @@
>Login >Login
</el-button> </el-button>
<div class="tips"> <!-- <div class="tips">-->
<span style="margin-right:20px;">username: admin</span> <!-- <span style="margin-right:20px;">username: admin</span>-->
<span> password: any</span> <!-- <span> password: any</span>-->
</div> <!-- </div>-->
</el-form> </el-form>
</div> </div>
@ -64,7 +64,7 @@ export default {
name: 'Login', name: 'Login',
data() { data() {
const validateUsername = (rule, value, callback) => { const validateUsername = (rule, value, callback) => {
if (!validUsername(value)) { if (false || !validUsername(value)) {
callback(new Error('Please enter the correct user name')) callback(new Error('Please enter the correct user name'))
} else { } else {
callback() callback()
@ -80,11 +80,17 @@ export default {
return { return {
loginForm: { loginForm: {
username: 'admin', username: 'admin',
password: '111111' password: '123456'
}, },
loginRules: { loginRules: {
username: [{ required: true, trigger: 'blur', validator: validateUsername }], username: [{
password: [{ required: true, trigger: 'blur', validator: validatePassword }] required: true, trigger: 'blur'
// validator: validateUsername
}],
password: [{
required: true, trigger: 'blur'
// validator: validatePassword
}]
}, },
loading: false, loading: false,
passwordType: 'password', passwordType: 'password',
@ -117,8 +123,9 @@ export default {
this.$store.dispatch('user/login', this.loginForm).then(() => { this.$store.dispatch('user/login', this.loginForm).then(() => {
this.$router.push({ path: this.redirect || '/' }) this.$router.push({ path: this.redirect || '/' })
this.loading = false this.loading = false
}).catch(() => { }).catch((failMessage) => {
this.loading = false this.loading = false
this.$message.error(failMessage)
}) })
} else { } else {
console.log('error submit!!') console.log('error submit!!')

@ -125,7 +125,7 @@ export default {
// console.log(this.edit) // console.log(this.edit)
items({ id: this.row.id }).then(r => { items({ id: this.row.id }).then(r => {
this.edit.items = r.data.items this.edit.items = r.data.items
// console.log('edit.items -> ', this.edit.items) console.log('edit.items -> ', this.edit.items)
}) })
} }
}, },

Loading…
Cancel
Save