UserToken userToken = null; String token = parsedToken.getToken(); if (userTokenManager.tokenIsLoggedIn(token)) { userToken = userTokenManager.getByToken(token); userTokenManager.signOutByToken(token); .signIn(parsedToken.getToken(), parsedToken.getType(), ((AuthorizedToken) parsedToken).getUserId(), ((AuthorizedToken) parsedToken).getMaxInactiveInterval()); userTokenManager.touch(token); UserTokenHolder.setCurrent(userToken);
@GetMapping("/user-token") @ApiOperation("获取全部用户令牌信息") @Authorize(action = Permission.ACTION_GET) public ResponseMessage<List<UserToken>> allLoggedUser() { return ok(userTokenManager.allLoggedUser()); }
@PutMapping("/user-token/token/{token}/{state}") @ApiOperation("根据令牌更新用户令牌状态") @Authorize(action = Permission.ACTION_UPDATE) public ResponseMessage<Void> changeTokenState(@PathVariable String token, @PathVariable TokenState state) { userTokenManager.changeTokenState(token, state); return ok(); }
@Override public void onApplicationEvent(AuthorizationSuccessEvent event) { UserToken token = UserTokenHolder.currentToken(); String tokenType = (String) event.getParameter("token_type").orElse(defaultTokenType); if (token != null) { //先退出已登陆的用户 userTokenManager.signOutByToken(token.getToken()); } //创建token GeneratedToken newToken = userTokenGenerators.stream() .filter(generator -> generator.getSupportTokenType().equals(tokenType)) .findFirst() .orElseThrow(() -> new UnsupportedOperationException(tokenType)) .generate(event.getAuthentication()); //登入 userTokenManager.signIn(newToken.getToken(), newToken.getType(), event.getAuthentication().getUser().getId(), newToken.getTimeout()); //响应结果 event.getResult().putAll(newToken.getResponse()); } }
@PostMapping("/user-token/{token}/{type}/{userId}/{maxInactiveInterval}") @ApiOperation("将用户设置为登录") @Authorize(action = Permission.ACTION_ADD) public ResponseMessage<UserToken> signIn(@PathVariable String token, @PathVariable String type, @PathVariable String userId, @PathVariable long maxInactiveInterval) { return ok(userTokenManager.signIn(token, type, userId, maxInactiveInterval)); }
@Override public void sessionDestroyed(HttpSessionEvent se) { String sessionId = se.getSession().getId(); userTokenManager.signOutByToken(sessionId); } }
@GetMapping("/user-token/token/{token}") @ApiOperation("根据token获取令牌信息") @Authorize(action = Permission.ACTION_GET) public ResponseMessage<UserToken> getByToken(@PathVariable String token) { return ok(userTokenManager.getByToken(token)); }
@GetMapping("/user-token/token/{token}/logged") @ApiOperation("根据令牌判断用户是否已经登录") @Authorize(action = Permission.ACTION_GET) public ResponseMessage<Boolean> tokenIsLoggedIn(@PathVariable String token) { return ok(userTokenManager.tokenIsLoggedIn(token)); }
@GetMapping("/user-token/user/{userId}") @ApiOperation("根据用户ID获取全部令牌信息") @Authorize(action = Permission.ACTION_GET) public ResponseMessage<List<UserToken>> getByUserId(@PathVariable String userId) { return ok(userTokenManager.getByUserId(userId)); }
@PutMapping("/user-token/user/{userId}/{state}") @ApiOperation("根据用户id更新用户令牌状态") @Authorize(action = Permission.ACTION_UPDATE) public ResponseMessage<Void> changeUserState(@PathVariable String userId, @PathVariable TokenState state) { userTokenManager.changeUserState(userId, state); return ok(); }
@DeleteMapping("/user-token/user/{userId}") @ApiOperation("根据用户id将用户踢下线") @Authorize(action = Permission.ACTION_UPDATE) public ResponseMessage<Void> signOutByUserId(@PathVariable String userId) { userTokenManager.signOutByUserId(userId); return ok(); }
@PutMapping("/user-token/check") @ApiOperation("检查所有已过期的token并移除") @Authorize(action = Permission.ACTION_UPDATE) public ResponseMessage<Boolean> checkExpiredToken() { userTokenManager.checkExpiredToken(); return ok(true); }
@Override public void onApplicationEvent(AuthorizationSuccessEvent event) { UserToken token = UserTokenHolder.currentToken(); String tokenType = (String) event.getParameter("token_type").orElse(defaultTokenType); if (token != null) { //先退出已登陆的用户 userTokenManager.signOutByToken(token.getToken()); } //创建token GeneratedToken newToken = userTokenGenerators.stream() .filter(generator -> generator.getSupportTokenType().equals(tokenType)) .findFirst() .orElseThrow(() -> new UnsupportedOperationException(tokenType)) .generate(event.getAuthentication()); //登入 userTokenManager.signIn(newToken.getToken(), newToken.getType(), event.getAuthentication().getUser().getId(), newToken.getTimeout()); //响应结果 event.getResult().putAll(newToken.getResponse()); } }
@EventListener public void handleOAuth2GrantEvent(OAuth2GrantEvent event) { userTokenManager.signIn( event.getAccessToken().getAccessToken(), "oauth2-access-token", event.getAccessToken().getOwnerId(), event.getAccessToken().getExpiresIn() * 1000L); } }
@Override public void onApplicationEvent(AuthorizationExitEvent event) { userTokenManager.signOutByToken(geToken()); } }
UserToken token = userTokenManager.getByToken(usernameAndPassword); if (token != null && token.isNormal()) { return new ParsedToken() {
@GetMapping("/user-token/token/{token}/logged") @ApiOperation("根据令牌判断用户是否已经登录") @Authorize(action = Permission.ACTION_GET) public ResponseMessage<Boolean> tokenIsLoggedIn(@PathVariable String token) { return ok(userTokenManager.tokenIsLoggedIn(token)); }
@GetMapping("/user-token/user/{userId}") @ApiOperation("根据用户ID获取全部令牌信息") @Authorize(action = Permission.ACTION_GET) public ResponseMessage<List<UserToken>> getByUserId(@PathVariable String userId) { return ok(userTokenManager.getByUserId(userId)); }
@PutMapping("/user-token/user/{userId}/{state}") @ApiOperation("根据用户id更新用户令牌状态") @Authorize(action = Permission.ACTION_UPDATE) public ResponseMessage<Void> changeUserState(@PathVariable String userId, @PathVariable TokenState state) { userTokenManager.changeUserState(userId, state); return ok(); }
@DeleteMapping("/user-token/user/{userId}") @ApiOperation("根据用户id将用户踢下线") @Authorize(action = Permission.ACTION_UPDATE) public ResponseMessage<Void> signOutByUserId(@PathVariable String userId) { userTokenManager.signOutByUserId(userId); return ok(); }