提交 f39d63b0 编写于 作者: E Evan

Use fore-end login interceptor.

上级 fcf1edad
<template> <template>
<!--此处的 id 虽然也名为 app,但与主 html 中含义不同-->
<div id="app"> <div id="app">
<router-view/> <router-view/>
</div> </div>
</template> </template>
<script> <script>
import NavMenu from '@/components/common/NavMenu' import NavMenu from '@/components/common/NavMenu'
export default {
name: 'App', export default {
components: {NavMenu} name: 'App',
} components: {NavMenu}
}
</script> </script>
<style> <style>
#app { #app {
font-family: 'Avenir', Helvetica, Arial, sans-serif; font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
text-align: center; text-align: center;
color: #2c3e50; color: #2c3e50;
margin-top: 10px; margin-top: 10px;
} }
</style> </style>
...@@ -37,15 +37,18 @@ ...@@ -37,15 +37,18 @@
}, },
methods: { methods: {
login () { login () {
var _this = this
this.$axios this.$axios
.post('/login', { .post('/login', {
username: this.loginForm.username, username: this.loginForm.username,
password: this.loginForm.password password: this.loginForm.password
}) })
.then(successResponse => { .then(resp => {
this.responseResult = JSON.stringify(successResponse.data) if (resp.data.code === 200) {
if (successResponse.data.code === 200) { var data = resp.data
this.$router.replace({path: '/home'}) _this.$store.commit('login', data.data)
var path = _this.$route.query.redirect
_this.$router.replace({path: path === '/' || path === undefined ? '/home' : path})
} }
}) })
.catch(failResponse => {}) .catch(failResponse => {})
......
<template>
<div>
<el-row>
<Header></Header>
</el-row>
<el-row>
<el-col :span="4">
<admin-menu></admin-menu>
</el-col>
</el-row>
</div>
</template>
<script>
import AdminMenu from './AdminMenu'
import Header from './Header'
export default {
name: 'AdminIndex',
components: {AdminMenu, Header}
}
</script>
<style scoped>
</style>
<template>
<div>
<el-menu
:default-active="'/admin/users'"
class="el-menu-admin"
router
mode="vertical"
background-color="#545c64"
text-color="#fff"
active-text-color="#ffd04b">
<el-menu-item v-for="(item,i) in navList" :key="i" :index="item.name">
<i :class="item.icon"></i>
{{ item.navItem }}
</el-menu-item>
</el-menu>
</div>
</template>
<script>
export default {
name: 'AdminMenu',
data () {
return {
navList: [
{name: '/admin/users', navItem: '用户管理', icon: 'el-icon-user'},
{name: '/admin/library', navItem: '图书管理', icon: 'el-icon-tickets'},
{name: '/admin/news', navItem: '新闻管理', icon: 'el-icon-news'},
{name: '/system', navItem: '系统设置', icon: 'el-icon-s-tools'}
],
keywords: ''
}
}
}
</script>
<style scoped>
.el-menu-admin {
height: 1000px;
}
</style>
<template>
<el-card class="admin-header">
<a href="/index">
<img src="../../assets/img/icon/icon2.png" alt="" width="50px" style="float: left;">
</a>
</el-card>
</template>
<script>
export default {
name: 'Header'
}
</script>
<style scoped>
.admin-header {
height: 80px;
}
</style>
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
{name: '/index', navItem: '首页'}, {name: '/index', navItem: '首页'},
{name: '/jotter', navItem: '笔记本'}, {name: '/jotter', navItem: '笔记本'},
{name: '/library', navItem: '图书馆'}, {name: '/library', navItem: '图书馆'},
{name: '#nowhere', navItem: '个人中心'} {name: '/admin', navItem: '个人中心'}
], ],
keywords: '' keywords: ''
} }
......
...@@ -7,6 +7,7 @@ import App from './App' ...@@ -7,6 +7,7 @@ import App from './App'
import router from './router' import router from './router'
import mavonEditor from 'mavon-editor' import mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css' import 'mavon-editor/dist/css/index.css'
import store from './store'
var axios = require('axios') var axios = require('axios')
axios.defaults.baseURL = 'http://localhost:8443/api' axios.defaults.baseURL = 'http://localhost:8443/api'
...@@ -16,11 +17,29 @@ Vue.config.productionTip = false ...@@ -16,11 +17,29 @@ Vue.config.productionTip = false
Vue.use(ElementUI) Vue.use(ElementUI)
Vue.use(mavonEditor) Vue.use(mavonEditor)
router.beforeEach((to, from, next) => {
if (to.meta.requireAuth) {
if (store.state.user.username) {
console.log(store.state.user.username)
next()
} else {
next({
path: 'login',
query: {redirect: to.fullPath}
})
}
} else {
next()
}
}
)
/* eslint-disable no-new */ /* eslint-disable no-new */
new Vue({ new Vue({
el: '#app', el: '#app',
render: h => h(App), render: h => h(App),
router, router,
store,
components: { App }, components: { App },
template: '<App/>' template: '<App/>'
}) })
...@@ -6,6 +6,7 @@ import Editor from '@/components/jotter/Editor' ...@@ -6,6 +6,7 @@ import Editor from '@/components/jotter/Editor'
import LibraryIndex from '@/components/library/LibraryIndex' import LibraryIndex from '@/components/library/LibraryIndex'
import Login from '@/components/Login' import Login from '@/components/Login'
import Home from '@/components/Home' import Home from '@/components/Home'
import AdminIndex from '@/components/admin/AdminIndex'
Vue.use(Router) Vue.use(Router)
...@@ -14,9 +15,12 @@ export default new Router({ ...@@ -14,9 +15,12 @@ export default new Router({
routes: [ routes: [
{ {
path: '/', path: '/',
name: 'Login', name: 'index',
redirect: '/login', redirect: '/index',
component: Login component: AppIndex,
meta: {
requireAuth: true
}
}, },
{ {
// home页面并不需要被访问,只是作为其它组件的父组件 // home页面并不需要被访问,只是作为其它组件的父组件
...@@ -28,22 +32,34 @@ export default new Router({ ...@@ -28,22 +32,34 @@ export default new Router({
{ {
path: '/index', path: '/index',
name: 'AppIndex', name: 'AppIndex',
component: AppIndex component: AppIndex,
meta: {
requireAuth: true
}
}, },
{ {
path: '/jotter', path: '/jotter',
name: 'JotterIndex', name: 'Jotter',
component: JotterIndex component: JotterIndex,
meta: {
requireAuth: true
}
}, },
{ {
path: '/editor', path: '/editor',
name: 'Editor', name: 'Editor',
component: Editor component: Editor,
meta: {
requireAuth: true
}
}, },
{ {
path: '/library', path: '/library',
name: 'Library', name: 'Library',
component: LibraryIndex component: LibraryIndex,
meta: {
requireAuth: true
}
} }
] ]
}, },
...@@ -51,6 +67,14 @@ export default new Router({ ...@@ -51,6 +67,14 @@ export default new Router({
path: '/login', path: '/login',
name: 'Login', name: 'Login',
component: Login component: Login
},
{
path: '/admin',
name: 'Admin',
component: AdminIndex,
meta: {
requireAuth: true
}
} }
] ]
}) })
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
import '../lib/sockjs'
import '../lib/stomp'
Vue.use(Vuex) Vue.use(Vuex)
export default new Vuex.Store({ export default new Vuex.Store({
state: { state: {
user: { user: {
name: window.localStorage.getItem('user' || '[]') == null ? '未登录' : JSON.parse(window.localStorage.getItem('user' || '[]')).name, // name: window.localStorage.getItem('user' || '[]') == null ? '未登录' : JSON.parse(window.localStorage.getItem('user' || '[]')).name,
userface: window.localStorage.getItem('user' || '[]') == null ? '' : JSON.parse(window.localStorage.getItem('user' || '[]')).userface, // userface: window.localStorage.getItem('user' || '[]') == null ? '' : JSON.parse(window.localStorage.getItem('user' || '[]')).userface,
username: window.localStorage.getItem('user' || '[]') == null ? '' : JSON.parse(window.localStorage.getItem('user' || '[]')).username, username: window.localStorage.getItem('user' || '[]') == null ? '' : JSON.parse(window.localStorage.getItem('user' || '[]')).username
roles: window.localStorage.getItem('user' || '[]') == null ? '' : JSON.parse(window.localStorage.getItem('user' || '[]')).roles // roles: window.localStorage.getItem('user' || '[]') == null ? '' : JSON.parse(window.localStorage.getItem('user' || '[]')).roles
}, },
routes: [] routes: []
}, },
......
...@@ -30,7 +30,7 @@ public class LoginController { ...@@ -30,7 +30,7 @@ public class LoginController {
return ResultFactory.buildFailResult(message); return ResultFactory.buildFailResult(message);
} else { } else {
session.setAttribute("user", user); session.setAttribute("user", user);
return ResultFactory.buildSuccessResult("登录成功"); return ResultFactory.buildSuccessResult(user);
} }
} }
} }
...@@ -50,12 +50,6 @@ public class LoginInterceptor implements HandlerInterceptor{ ...@@ -50,12 +50,6 @@ public class LoginInterceptor implements HandlerInterceptor{
return result; return result;
} }
@Override @Override
public void postHandle (HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception{ public void postHandle (HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册