OnlineTicket

This commit is contained in:
Crystal.Sea
2020-11-08 21:43:32 +08:00
parent 06b27d3564
commit cd00a039c9
15 changed files with 131 additions and 21 deletions

View File

@@ -20,6 +20,8 @@ package org.maxkey.web.endpoint;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.online.OnlineTicketServices;
import org.maxkey.authn.realm.AbstractAuthenticationRealm;
import org.maxkey.configuration.ApplicationConfig;
import org.maxkey.web.WebConstants;
@@ -49,6 +51,10 @@ public class LogoutEndpoint {
@Autowired
ApplicationConfig applicationConfig;
@Autowired
@Qualifier("onlineTicketServices")
protected OnlineTicketServices onlineTicketServices;
@RequestMapping(value={"/logout"})
public ModelAndView logout(
HttpServletRequest request,
@@ -89,8 +95,10 @@ public class LogoutEndpoint {
_logger.debug("re Login URL : "+ reLoginUrl);
modelAndView.addObject("reloginUrl",reLoginUrl);
onlineTicketServices.remove(((SigninPrincipal)WebContext.getAuthentication().getPrincipal()).getOnlineTicket().getTicketId());
request.getSession().invalidate();
SecurityContextHolder.clearContext();
modelAndView.setViewName(viewName);
return modelAndView;
}

View File

@@ -1,27 +0,0 @@
package org.maxkey.web.endpoint;
import org.maxkey.authn.online.OnlineTicket;
import org.maxkey.authn.online.OnlineTicketServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value={"/onlineticket"})
public class OnlineTicketEndpoint {
@Autowired
@Qualifier("onlineTicketServices")
protected OnlineTicketServices onlineTicketServices;
@ResponseBody
@RequestMapping(value="/validate")
public OnlineTicket ticketValidate(
@RequestParam(value ="ticket",required = true) String ticket) {
OnlineTicket onlineTicket = onlineTicketServices.get(ticket);
return onlineTicket;
}
}

View File

@@ -23,6 +23,9 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.maxkey.authn.SavedRequestAwareAuthenticationSuccessHandler;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.online.OnlineTicket;
import org.maxkey.authn.online.OnlineTicketServices;
import org.maxkey.configuration.ApplicationConfig;
import org.maxkey.constants.ConstantsPasswordSetType;
import org.maxkey.web.WebConstants;
@@ -31,6 +34,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.savedrequest.HttpSessionRequestCache;
import org.springframework.security.web.savedrequest.RequestCache;
import org.springframework.security.web.savedrequest.SavedRequest;
@@ -57,6 +61,10 @@ public class PermissionAdapter extends HandlerInterceptorAdapter {
SavedRequestAwareAuthenticationSuccessHandler savedRequestSuccessHandler;
static ConcurrentHashMap<String, String> navigationsMap = null;
@Autowired
@Qualifier("onlineTicketServices")
protected OnlineTicketServices onlineTicketServices;
/*
* 请求前处理 (non-Javadoc)
@@ -96,11 +104,12 @@ public class PermissionAdapter extends HandlerInterceptorAdapter {
}
}
Authentication authentication = WebContext.getAuthentication();
//save first protected url
SavedRequest firstSavedRequest = (SavedRequest)WebContext.getAttribute(WebConstants.FIRST_SAVED_REQUEST_PARAMETER);
// 判断用户是否登录, 判断用户和角色,判断用户是否登录用户
if (WebContext.getAuthentication() == null
|| WebContext.getAuthentication().getAuthorities() == null) {
if (authentication == null
|| authentication.getAuthorities() == null) {
//保存未认证的请求信息
if(firstSavedRequest==null){
RequestCache requestCache = new HttpSessionRequestCache();
@@ -119,14 +128,20 @@ public class PermissionAdapter extends HandlerInterceptorAdapter {
return false;
}
//认证完成,跳转到未认证请求
if(firstSavedRequest!=null) {
savedRequestSuccessHandler.onAuthenticationSuccess(request, response, WebContext.getAuthentication());
savedRequestSuccessHandler.onAuthenticationSuccess(request, response, authentication);
WebContext.removeAttribute(WebConstants.FIRST_SAVED_REQUEST_PARAMETER);
}
boolean hasAccess = true;
if(authentication.getPrincipal() instanceof SigninPrincipal) {
SigninPrincipal signinPrincipal = (SigninPrincipal)authentication.getPrincipal();
OnlineTicket onlineTicket = signinPrincipal.getOnlineTicket();
onlineTicketServices.refresh(onlineTicket.getTicketId());
}
/*
* boolean preHandler = super.preHandle(request, response, handler);
*