From c42e34b507d49e3f80a4d24606cb0f1570686ed7 Mon Sep 17 00:00:00 2001 From: "wei.zhang2" Date: Mon, 16 Oct 2017 09:54:45 +0800 Subject: [PATCH] 1 --- .../server/config/SecurityHandlerConfig.java | 5 +++++ .../server/service/impl/TokenServiceImpl.java | 16 ++++++++-------- src/main/resources/public/index.html | 2 +- src/main/resources/static/js/main.js | 10 ++++++++++ 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/boot/security/server/config/SecurityHandlerConfig.java b/src/main/java/com/boot/security/server/config/SecurityHandlerConfig.java index 6c624d6..24606c5 100644 --- a/src/main/java/com/boot/security/server/config/SecurityHandlerConfig.java +++ b/src/main/java/com/boot/security/server/config/SecurityHandlerConfig.java @@ -20,6 +20,7 @@ import org.springframework.security.web.authentication.logout.LogoutSuccessHandl import com.boot.security.server.dto.LoginUser; import com.boot.security.server.dto.ResponseInfo; import com.boot.security.server.dto.Token; +import com.boot.security.server.filter.TokenFilter; import com.boot.security.server.service.TokenService; import com.boot.security.server.utils.ResponseUtil; @@ -96,6 +97,10 @@ public class SecurityHandlerConfig { Authentication authentication) throws IOException, ServletException { ResponseInfo info = ResponseInfo.builder().code(HttpStatus.OK.value() + "").message("退出成功").build(); + String token = TokenFilter.getToken(request); + boolean flag = tokenService.deleteToken(token); + System.out.println(flag); + ResponseUtil.responseJson(response, HttpStatus.OK.value(), info); } }; diff --git a/src/main/java/com/boot/security/server/service/impl/TokenServiceImpl.java b/src/main/java/com/boot/security/server/service/impl/TokenServiceImpl.java index 918ff09..c2a6f4c 100644 --- a/src/main/java/com/boot/security/server/service/impl/TokenServiceImpl.java +++ b/src/main/java/com/boot/security/server/service/impl/TokenServiceImpl.java @@ -6,7 +6,6 @@ import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -29,12 +28,11 @@ public class TokenServiceImpl implements TokenService { @Override public Token saveToken(LoginUser loginUser) { - String oldToken = getTokenByUserId(loginUser.getId()); - if (!StringUtils.isEmpty(oldToken)) { - deleteToken(oldToken); + String token = getTokenByUserId(loginUser.getId()); + if (StringUtils.isEmpty(token)) { + token = UUID.randomUUID().toString(); } - String token = UUID.randomUUID().toString(); loginUser.setToken(token); updateLoginUser(loginUser); @@ -44,7 +42,6 @@ public class TokenServiceImpl implements TokenService { /** * 更新缓存的用户信息 */ - @Async @Override public void updateLoginUser(LoginUser loginUser) { redisTemplate.boundValueOps(getTokenKey(loginUser.getToken())).set(loginUser, expireSeconds, TimeUnit.SECONDS); @@ -59,8 +56,11 @@ public class TokenServiceImpl implements TokenService { @Override public boolean deleteToken(String token) { - if (redisTemplate.hasKey(getTokenKey(token))) { - redisTemplate.delete(getTokenKey(token)); + String key = getTokenKey(token); + LoginUser loginUser = redisTemplate.opsForValue().get(key); + if (loginUser != null) { + redisTemplate.delete(key); + redisTemplate.delete(getUserIdKey(loginUser.getId())); return true; } diff --git a/src/main/resources/public/index.html b/src/main/resources/public/index.html index c6a5ab7..62bddc4 100644 --- a/src/main/resources/public/index.html +++ b/src/main/resources/public/index.html @@ -46,7 +46,7 @@ 头像
- 退出 + 退出
diff --git a/src/main/resources/static/js/main.js b/src/main/resources/static/js/main.js index 5ef2a88..0c6bb15 100644 --- a/src/main/resources/static/js/main.js +++ b/src/main/resources/static/js/main.js @@ -107,6 +107,16 @@ function showUnreadNotice(){ }); } +function logout(){ + $.ajax({ + type : 'get', + url : '/logout', + success : function(data) { + location.href='/login.html'; + } + }); +} + var active; layui.use(['layer', 'element'], function() {