提交 f39d63b0 编写于 作者: E Evan

Use fore-end login interceptor.

上级 fcf1edad
<template>
<!--此处的 id 虽然也名为 app,但与主 html 中含义不同-->
<div id="app">
<router-view/>
</div>
<router-view/>
</div>
</template>
<script>
import NavMenu from '@/components/common/NavMenu'
export default {
name: 'App',
components: {NavMenu}
}
export default {
name: 'App',
components: {NavMenu}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 10px;
}
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 10px;
}
</style>
......@@ -37,15 +37,18 @@
},
methods: {
login () {
var _this = this
this.$axios
.post('/login', {
username: this.loginForm.username,
password: this.loginForm.password
})
.then(successResponse => {
this.responseResult = JSON.stringify(successResponse.data)
if (successResponse.data.code === 200) {
this.$router.replace({path: '/home'})
.then(resp => {
if (resp.data.code === 200) {
var data = resp.data
_this.$store.commit('login', data.data)
var path = _this.$route.query.redirect
_this.$router.replace({path: path === '/' || path === undefined ? '/home' : path})
}
})
.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 @@
{name: '/index', navItem: '首页'},
{name: '/jotter', navItem: '笔记本'},
{name: '/library', navItem: '图书馆'},
{name: '#nowhere', navItem: '个人中心'}
{name: '/admin', navItem: '个人中心'}
],
keywords: ''
}
......
......@@ -7,6 +7,7 @@ import App from './App'
import router from './router'
import mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
import store from './store'
var axios = require('axios')
axios.defaults.baseURL = 'http://localhost:8443/api'
......@@ -16,11 +17,29 @@ Vue.config.productionTip = false
Vue.use(ElementUI)
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 */
new Vue({
el: '#app',
render: h => h(App),
router,
store,
components: { App },
template: '<App/>'
})
......@@ -6,6 +6,7 @@ import Editor from '@/components/jotter/Editor'
import LibraryIndex from '@/components/library/LibraryIndex'
import Login from '@/components/Login'
import Home from '@/components/Home'
import AdminIndex from '@/components/admin/AdminIndex'
Vue.use(Router)
......@@ -14,9 +15,12 @@ export default new Router({
routes: [
{
path: '/',
name: 'Login',
redirect: '/login',
component: Login
name: 'index',
redirect: '/index',
component: AppIndex,
meta: {
requireAuth: true
}
},
{
// home页面并不需要被访问,只是作为其它组件的父组件
......@@ -28,22 +32,34 @@ export default new Router({
{
path: '/index',
name: 'AppIndex',
component: AppIndex
component: AppIndex,
meta: {
requireAuth: true
}
},
{
path: '/jotter',
name: 'JotterIndex',
component: JotterIndex
name: 'Jotter',
component: JotterIndex,
meta: {
requireAuth: true
}
},
{
path: '/editor',
name: 'Editor',
component: Editor
component: Editor,
meta: {
requireAuth: true
}
},
{
path: '/library',
name: 'Library',
component: LibraryIndex
component: LibraryIndex,
meta: {
requireAuth: true
}
}
]
},
......@@ -51,6 +67,14 @@ export default new Router({
path: '/login',
name: 'Login',
component: Login
},
{
path: '/admin',
name: 'Admin',
component: AdminIndex,
meta: {
requireAuth: true
}
}
]
})
import Vue from 'vue'
import Vuex from 'vuex'
import '../lib/sockjs'
import '../lib/stomp'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
user: {
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,
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
// 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,
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
},
routes: []
},
......
......@@ -30,7 +30,7 @@ public class LoginController {
return ResultFactory.buildFailResult(message);
} else {
session.setAttribute("user", user);
return ResultFactory.buildSuccessResult("登录成功");
return ResultFactory.buildSuccessResult(user);
}
}
}
......@@ -50,12 +50,6 @@ public class LoginInterceptor implements HandlerInterceptor{
return result;
}
@Override
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.
先完成此消息的编辑!
想要评论请 注册