提交 3b2d6239 编写于 作者: E Evan

fix: interceptor invalidation

上级 12766f35
......@@ -3,11 +3,11 @@
<el-form :rules="rules" class="login-container" label-position="left"
label-width="0px" v-loading="loading">
<h3 class="login_title">系统登录</h3>
<el-form-item prop="account">
<el-form-item prop="username">
<el-input type="text" v-model="loginForm.username"
auto-complete="off" placeholder="账号"></el-input>
</el-form-item>
<el-form-item prop="checkPass">
<el-form-item prop="password">
<el-input type="password" v-model="loginForm.password"
auto-complete="off" placeholder="密码"></el-input>
</el-form-item>
......@@ -25,8 +25,8 @@
data () {
return {
rules: {
account: [{required: true, message: '用户名不能为空', trigger: 'blur'}],
checkPass: [{required: true, message: '密码不能为空', trigger: 'blur'}]
username: [{required: true, message: '用户名不能为空', trigger: 'blur'}],
password: [{required: true, message: '密码不能为空', trigger: 'blur'}]
},
checked: true,
loginForm: {
......
......@@ -17,10 +17,14 @@ Vue.config.productionTip = false
Vue.use(ElementUI)
Vue.use(mavonEditor)
// 页面刷新时,重新赋值token,也可直接在 store 里设置 token 默认值
// if (window.localStorage.getItem('token')) {
// store.commit('login', window.localStorage.getItem('token'))
// }
router.beforeEach((to, from, next) => {
if (to.meta.requireAuth) {
if (store.state.user.username) {
console.log(store.state.user.username)
if (store.state.user !== '未登录') {
next()
} else {
next({
......@@ -34,6 +38,40 @@ router.beforeEach((to, from, next) => {
}
)
// http request 拦截器
axios.interceptors.request.use(
config => {
if (store.state.token) {
// 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.Authorization = `token ${store.state.token}`
}
return config
},
err => {
return Promise.reject(err)
})
// http response 拦截器
axios.interceptors.response.use(
response => {
return response
},
error => {
if (error.response) {
switch (error.response.status) {
case 401:
// 返回 401 清除token信息并跳转到登录页面
store.commit('logout')
router.replace({
path: 'login',
query: {redirect: router.currentRoute.fullPath}
})
}
}
// 返回接口返回的错误信息
return Promise.reject(error.response.data)
})
/* eslint-disable no-new */
new Vue({
el: '#app',
......
......@@ -6,24 +6,25 @@ Vue.use(Vuex)
export default new Vuex.Store({
state: {
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,
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
},
// token: window.localStorage.getItem('token'),
routes: []
},
mutations: {
initMenu (state, menus) {
state.routes = menus
},
login (state, user) {
state.user = user
window.localStorage.setItem('user', JSON.stringify(user))
console.log(user)
login (state, data) {
// state.user = data
window.localStorage.setItem('user', data)
},
logout (state) {
window.localStorage.removeItem('user')
// state.user = null
state.routes = []
}
},
......
......@@ -30,10 +30,11 @@ public class LoginController {
username = HtmlUtils.htmlEscape(username);
Subject subject = SecurityUtils.getSubject();
// subject.getSession().setTimeout(10000);
UsernamePasswordToken token = new UsernamePasswordToken(username, requestUser.getPassword());
try {
subject.login(token);
User user = userService.getByName(username);
User user = userService.getByUserName(username);
session.setAttribute("user", user);
return ResultFactory.buildSuccessResult(user);
} catch (AuthenticationException e) {
......
......@@ -15,6 +15,7 @@ public class User {
int id;
String username;
String password;
String name;
String salt;
public int getId() {
......@@ -41,6 +42,14 @@ public class User {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSalt() {
return salt;
}
......
......@@ -27,7 +27,7 @@ public class WJRealm extends AuthorizingRealm {
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
String userName = token.getPrincipal().toString();
User user = userService.getByName(userName);
User user = userService.getByUserName(userName);
String passwordInDB = user.getPassword();
String salt = user.getSalt();
SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(userName, passwordInDB, ByteSource.Util.bytes(salt), getName());
......
......@@ -14,11 +14,11 @@ public class UserService {
UserDAO userDAO;
public boolean isExist(String username) {
User user = getByName(username);
User user = getByUserName(username);
return null!=user;
}
public User getByName(String username) {
public User getByUserName(String username) {
return userDAO.findByUsername(username);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册