@Override
public void doFilter(final ServletRequest req, final ServletResponse res, final FilterChain chain)
throws IOException, ServletException {
final HttpServletRequest request = (HttpServletRequest) req;
final String authHeader = request.getHeader("Authorization");
if (authHeader == null || !authHeader.startsWith("Bearer ")) {
ExceptionUtils.createUnauthorizedException("Missing or invalid Authorization header.", res);
return;
}
try {
final String token = authHeader.substring(7); // The part after "Bearer "
final Claims claims =
Jwts.parser().setSigningKey("secretkey").parseClaimsJws(token).getBody();
request.setAttribute("claims", claims);
} catch (final Exception e) {
ExceptionUtils.createUnauthorizedException("Invalid token", res);
return;
}
chain.doFilter(req, res);
}
java类javax.servlet.ServletResponse的实例源码
JwtFilter.java 文件源码
项目:IPPR2016
阅读 31
收藏 0
点赞 0
评论 0
DynamicUrlPermissionsShiroFilter.java 文件源码
项目:xproject
阅读 31
收藏 0
点赞 0
评论 0
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
getDelegateShrioFilter().doFilter(request, response, chain);
} catch (UnknownSessionException e) {
System.out.println(e);
if(HttpUtils.isAsynRequest((HttpServletRequest) request)){
Result<Object> result = new Result<Object>();
result.setSuccess(false);
result.setMessage("对不起,您的会话已过期,请重新登录!");
HttpUtils.asynOutputResponse((HttpServletResponse) response, ContentType.APPLICATION_JSON, JsonUtils.object2Json(result));
}else{
throw e;
}
}
}
SimpleAuthFilter.java 文件源码
项目:simpleauth
阅读 35
收藏 0
点赞 0
评论 0
@Override
public void doFilter(final ServletRequest request, final ServletResponse response,
final FilterChain chain) throws IOException, ServletException {
if (request instanceof HttpServletRequest) {
final HttpServletRequest req = ((HttpServletRequest) request);
final HttpServletResponse res = ((HttpServletResponse) response);
final String header = req.getHeader(SimpleAuth.HTTP_HEADER);
if (header != null) {
final String[] sp = header.split(" ");
// Authentication: torch TOKEN
if (sp.length == 2) {
final String scheme = sp[0], param = sp[1];
if (SimpleAuth.SCHEME.equals(scheme)) {
if (sa.verify(param)) {
chain.doFilter(request, response);
return;
}
}
}
}
if (!res.isCommitted()) {
final String err = "FORBIDDEN\r\n";
res.reset();
res.setStatus(HttpServletResponse.SC_FORBIDDEN);
res.setContentLength(err.length());
res.setContentType("text/plain");
res.setCharacterEncoding("ISO-8859-1");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
res.setHeader(getClass().getSimpleName(), "deny");
res.getWriter().print(err);
return;
}
}
if (!response.isCommitted()) {
response.reset();
}
throw new ServletException(new UnsupportedOperationException());
}
JWTFilter.java 文件源码
项目:klask-io
阅读 33
收藏 0
点赞 0
评论 0
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
try {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String jwt = resolveToken(httpServletRequest);
if (StringUtils.hasText(jwt)) {
if (this.tokenProvider.validateToken(jwt)) {
Authentication authentication = this.tokenProvider.getAuthentication(jwt);
SecurityContextHolder.getContext().setAuthentication(authentication);
}
}
filterChain.doFilter(servletRequest, servletResponse);
} catch (ExpiredJwtException eje) {
log.info("Security exception for user {} - {}", eje.getClaims().getSubject(), eje.getMessage());
((HttpServletResponse) servletResponse).setStatus(HttpServletResponse.SC_UNAUTHORIZED);
}
}
AgentManagerServlet.java 文件源码
项目:parabuild-ci
阅读 29
收藏 0
点赞 0
评论 0
/**
* Will accept requests only from build manager.
*/
public void service(final ServletRequest request, final ServletResponse response) throws IOException, ServletException {
// Prohibit non-remote manager address
final HttpServletRequest httpServletRequest = (HttpServletRequest) request;
final String remoteAddr = httpServletRequest.getRemoteAddr();
if (!DISABLE_SOURCE_IP_ADDRESS_CHECK && !remoteAddr.equals(BUILD_MANAGER_ADDRESS)) {
final HttpServletResponse httpServletResponce = (HttpServletResponse) response;
httpServletResponce.setStatus(HttpServletResponse.SC_FORBIDDEN);
IoUtils.closeHard(request.getInputStream());
IoUtils.closeHard(response.getOutputStream());
return;
}
// Execute normally
super.service(request, response);
}
TestJiraMonitoringFilter.java 文件源码
项目:jira-confluence-javamelody
阅读 86
收藏 0
点赞 0
评论 0
/** Test.
* @throws ServletException e
* @throws IOException e */
@Test
public void testNoHttp() throws ServletException, IOException {
// non http
final FilterChain servletChain = createNiceMock(FilterChain.class);
final ServletRequest servletRequest = createNiceMock(ServletRequest.class);
final ServletResponse servletResponse = createNiceMock(ServletResponse.class);
replay(config);
replay(context);
replay(servletRequest);
replay(servletResponse);
replay(servletChain);
jiraMonitoringFilter.init(config);
jiraMonitoringFilter.doFilter(servletRequest, servletResponse, servletChain);
verify(config);
verify(context);
verify(servletRequest);
verify(servletResponse);
verify(servletChain);
}
AWSXRayServletFilter.java 文件源码
项目:aws-xray-sdk-java
阅读 30
收藏 0
点赞 0
评论 0
public void postFilter(ServletRequest request, ServletResponse response) {
Segment segment = recorder.getCurrentSegment();
if (null != segment) {
HttpServletResponse httpServletResponse = castServletResponse(response);
if (null != httpServletResponse) {
Map<String, Object> responseAttributes = new HashMap<String, Object>();
int responseCode = httpServletResponse.getStatus();
switch (responseCode/100) {
case 4:
segment.setError(true);
if (responseCode == 429) {
segment.setThrottle(true);
}
break;
case 5:
segment.setFault(true);
break;
default:
break;
}
responseAttributes.put("status", responseCode);
Optional<Integer> contentLength = getContentLength(httpServletResponse);
if (contentLength.isPresent()) {
responseAttributes.put("content_length", contentLength.get());
}
segment.putHttp("response", responseAttributes);
}
recorder.endSegment();
}
}
RememberMeFilter.java 文件源码
项目:webside
阅读 30
收藏 0
点赞 0
评论 0
@Override
protected boolean isAccessAllowed(ServletRequest request,
ServletResponse response, Object mappedValue) {
Subject subject = getSubject(request, response);
// 如果 isAuthenticated 为 false 证明不是登录过的,同时 isRememberd 为true 证明是没登陆直接通过记住我功能进来的
if (!subject.isAuthenticated() && subject.isRemembered()) {
// 获取session的USERSESSION属性来看session是不是空的
if(null == ShiroAuthenticationManager.getSessionAttribute(ShiroUtils.USERSESSION))
{
// 初始化
UserEntity userEntity = (UserEntity) subject.getPrincipal();
ShiroAuthenticationManager.setSessionAttribute(ShiroUtils.USERSESSION, userEntity);
}
}
// 这个方法本来只返回 subject.isAuthenticated() 现在我们加上 subject.isRemembered()
// 让它同时也兼容remember这种情况
return subject.isAuthenticated() || subject.isRemembered();
}
AuthorizationFilterTest.java 文件源码
项目:oscm
阅读 43
收藏 0
点赞 0
评论 0
@Test
public void handleChangeUserPasswordRequest_errorAccountNotLocked()
throws Exception {
// given
doReturn(Boolean.TRUE).when(authReqDataMock).isRequestedToChangePwd();
doReturn("secret").when(authReqDataMock).getNewPassword();
doReturn("secret").when(authReqDataMock).getNewPassword2();
doReturn(userDetails).when(identityServiceMock).getUser(
any(VOUser.class));
doReturn("error.changePassword").when(requestMock).getAttribute(
Constants.REQ_ATTR_ERROR_KEY);
// when
boolean result = authFilter
.handleChangeUserPasswordRequest(chainMock, requestMock,
responseMock, authReqDataMock, identityServiceMock);
// then
assertFalse("Unsuccessful password change", result);
verify(authFilter, never()).sendRedirect(any(HttpServletRequest.class),
any(HttpServletResponse.class), anyString());
verify(chainMock, times(2)).doFilter(any(ServletRequest.class),
any(ServletResponse.class));
}
MyShiroFilterFactoryBean.java 文件源码
项目:springboot-shiro-cas-mybatis
阅读 36
收藏 0
点赞 0
评论 0
@Override
public void doFilterInternal(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain chain)
throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
String str = request.getRequestURI().toLowerCase();
boolean flag = true;
int idx = 0;
if ((idx = str.indexOf(".")) > 0){
str = str.substring(idx);
if (ignoreExt.contains(str.toLowerCase())){
flag = false;
}
}
if (flag){
super.doFilterInternal(servletRequest, servletResponse, chain);
} else {
chain.doFilter(servletRequest, servletResponse);
}
}
SafeDispatcherServletTests.java 文件源码
项目:cas4.0.x-server-wechat
阅读 29
收藏 0
点赞 0
评论 0
@Test
public void testService() throws ServletException, IOException {
this.safeServlet.init(this.mockConfig);
ServletRequest mockRequest = new MockHttpServletRequest();
ServletResponse mockResponse = new MockHttpServletResponse();
try {
this.safeServlet.service(mockRequest, mockResponse);
} catch (final ApplicationContextException ace) {
// good, threw the exception we expected.
return;
}
fail("Should have thrown ApplicationContextException since init() failed.");
}
CheckSessionFilter.java 文件源码
项目:yadaframework
阅读 34
收藏 0
点赞 0
评论 0
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException {
// FIXME per qualche strana ragione la sessione non scade se questa url viene ripetutamente chiamata!
// Per ovviare al problema, faccio il controllo via js con un timeout pari a quello di sessione, in modo che quando arriva è già scaduta,
// e male che vada la sessione dura il doppio del session timeout impostato (metti che un ajax rinfresca subito dopo il page load per cui il js che entra qui si trova la sessione ancora attiva e la rinfresca)
if ((servletRequest instanceof HttpServletRequest) && (servletResponse instanceof HttpServletResponse)) {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String requestUri = request.getRequestURI();
if (requestUri.endsWith(COMMAND)) {
HttpSession session = request.getSession(false);
String result = "expired";
if (session!=null) {
result = "active";
}
if (log.isDebugEnabled()) {
log.debug(COMMAND + " returned " + result + (session!=null?" "+session.getId():""));
}
Writer out = response.getWriter();
out.write(result);
out.close();
return;
}
}
filterChain.doFilter(servletRequest, servletResponse);
}
StaticUserWebFilter.java 文件源码
项目:ditb
阅读 46
收藏 0
点赞 0
评论 0
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain
) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
// if the user is already authenticated, don't override it
if (httpRequest.getRemoteUser() != null) {
chain.doFilter(request, response);
} else {
HttpServletRequestWrapper wrapper =
new HttpServletRequestWrapper(httpRequest) {
@Override
public Principal getUserPrincipal() {
return user;
}
@Override
public String getRemoteUser() {
return username;
}
};
chain.doFilter(wrapper, response);
}
}
CheckSessionOutFilter.java 文件源码
项目:ssm-web
阅读 33
收藏 0
点赞 0
评论 0
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest hsrq = (HttpServletRequest) request;
HttpServletResponse hsrp = (HttpServletResponse) response;
String clientType = hsrq.getParameter("clientType");
if ("WORD".equals(clientType)) {
chain.doFilter(request, response);
} else {
SessionUser person = null;
String reqPage = hsrq.getServletPath();
if (!reqPage.trim().equals("/login.do") && !reqPage.trim().equals("/login_out.do")
) {
person = (SessionUser) hsrq.getSession().getAttribute(SysConstants.SESSION_USER_KEY);
if (person == null) {
hsrp.sendRedirect("login.do");
return;
}
}
chain.doFilter(request, response);
}
}
SampleFelixFilter.java 文件源码
项目:aem-osgi-annotation-demo
阅读 30
收藏 0
点赞 0
评论 0
@Override
public void doFilter(final ServletRequest request, final ServletResponse response,
final FilterChain filterChain) throws IOException, ServletException {
final SlingHttpServletRequest slingRequest = (SlingHttpServletRequest) request;
logger.info("Felix Filter: request for {}", slingRequest.getRequestPathInfo().getResourcePath());
filterChain.doFilter(request, response);
}
SimpleCORSFilter.java 文件源码
项目:demo-spring-boot-security-oauth2
阅读 36
收藏 0
点赞 0
评论 0
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
String originHeader = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", originHeader);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "*");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Key, Authorization");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, res);
}
}
FormAuthenticationWithLockFilter.java 文件源码
项目:DWSurvey
阅读 34
收藏 0
点赞 0
评论 0
@Override
public boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {
AuthenticationToken token = createToken(request, response);
if (token == null) {
String msg = "createToken method implementation returned null. A valid non-null AuthenticationToken "
+ "must be created in order to execute a login attempt.";
throw new IllegalStateException(msg);
}
if (checkIfAccountLocked(request)) {
return onLoginFailure(token, new ExcessiveAttemptsException(), request, response);
} else {
if (!doLogin(request, response, token)) {
resetAccountLock(getUsername(request));
return false;
}
return true;
}
}
InstanceSupport.java 文件源码
项目:tomcat7
阅读 38
收藏 0
点赞 0
评论 0
/**
* Notify all lifecycle event listeners that a particular event has
* occurred for this Container. The default implementation performs
* this notification synchronously using the calling thread.
*
* @param type Event type
* @param servlet The relevant Servlet for this event
* @param request The servlet request we are processing
* @param response The servlet response we are processing
* @param exception Exception that occurred
*/
public void fireInstanceEvent(String type, Servlet servlet,
ServletRequest request,
ServletResponse response,
Throwable exception) {
if (listeners.length == 0)
return;
InstanceEvent event = new InstanceEvent(wrapper, servlet, type,
request, response, exception);
InstanceListener interested[] = listeners;
for (int i = 0; i < interested.length; i++)
interested[i].instanceEvent(event);
}
TestMimeHeaders.java 文件源码
项目:apache-tomcat-7.0.73-with-comment
阅读 36
收藏 0
点赞 0
评论 0
private void setupHeadersTest(Tomcat tomcat) {
Context ctx = tomcat.addContext("", getTemporaryDirectory()
.getAbsolutePath());
Tomcat.addServlet(ctx, "servlet", new HttpServlet() {
private static final long serialVersionUID = 1L;
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/plain; charset=ISO-8859-1");
res.getWriter().write("OK");
}
});
ctx.addServletMapping("/", "servlet");
alv = new HeaderCountLogValve();
tomcat.getHost().getPipeline().addValve(alv);
}
ActionDispatcherFilter.java 文件源码
项目:EasyController
阅读 36
收藏 0
点赞 0
评论 0
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
String target = request.getRequestURI();
if (contextPathLength != 0) {
target = target.substring(contextPathLength);
}
boolean handle = actionHandler.handle(target, request, response);
if (!handle) {// 没有处理则放行
chain.doFilter(request, response);
}
}
ExpiresFilter.java 文件源码
项目:lazycat
阅读 36
收藏 0
点赞 0
评论 0
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
if (request instanceof HttpServletRequest && response instanceof HttpServletResponse) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
if (response.isCommitted()) {
if (log.isDebugEnabled()) {
log.debug(sm.getString("expiresFilter.responseAlreadyCommited", httpRequest.getRequestURL()));
}
chain.doFilter(request, response);
} else {
XHttpServletResponse xResponse = new XHttpServletResponse(httpRequest, httpResponse);
chain.doFilter(request, xResponse);
if (!xResponse.isWriteResponseBodyStarted()) {
// Empty response, manually trigger
// onBeforeWriteResponseBody()
onBeforeWriteResponseBody(httpRequest, xResponse);
}
}
} else {
chain.doFilter(request, response);
}
}
InstanceSupport.java 文件源码
项目:jerrydog
阅读 43
收藏 0
点赞 0
评论 0
/**
* Notify all lifecycle event listeners that a particular event has
* occurred for this Container. The default implementation performs
* this notification synchronously using the calling thread.
*
* @param type Event type
* @param servlet The relevant Servlet for this event
* @param request The servlet request we are processing
* @param response The servlet response we are processing
*/
public void fireInstanceEvent(String type, Servlet servlet,
ServletRequest request,
ServletResponse response) {
if (listeners.length == 0)
return;
InstanceEvent event = new InstanceEvent(wrapper, servlet, type,
request, response);
InstanceListener interested[] = null;
synchronized (listeners) {
interested = (InstanceListener[]) listeners.clone();
}
for (int i = 0; i < interested.length; i++)
interested[i].instanceEvent(event);
}
BeforeInvocationFilter.java 文件源码
项目:lemon
阅读 33
收藏 0
点赞 0
评论 0
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
ProxyFilterChain proxyFilterChain = new ProxyFilterChain();
for (Filter filter : filters) {
proxyFilterChain.setInvokeNextFilter(false);
filter.doFilter(request, response, proxyFilterChain);
if (!proxyFilterChain.isInvokeNextFilter()) {
return;
}
}
chain.doFilter(request, response);
}
JspFactoryImpl.java 文件源码
项目:lams
阅读 34
收藏 0
点赞 0
评论 0
PrivilegedGetPageContext(JspFactoryImpl factory, Servlet servlet,
ServletRequest request, ServletResponse response, String errorPageURL,
boolean needsSession, int bufferSize, boolean autoflush) {
this.factory = factory;
this.servlet = servlet;
this.request = request;
this.response = response;
this.errorPageURL = errorPageURL;
this.needsSession = needsSession;
this.bufferSize = bufferSize;
this.autoflush = autoflush;
}
ShiroAjaxSessionFilter.java 文件源码
项目:xmanager
阅读 30
收藏 0
点赞 0
评论 0
@Override
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
HttpServletRequest req = WebUtils.toHttp(request);
String xmlHttpRequest = req.getHeader("X-Requested-With");
if (StringUtils.isNotBlank(xmlHttpRequest)) {
if (xmlHttpRequest.equalsIgnoreCase("XMLHttpRequest")) {
HttpServletResponse res = WebUtils.toHttp(response);
// 采用res.sendError(401);在Easyui中会处理掉error,$.ajaxSetup中监听不到
res.setHeader("oauthstatus", "401");
return false;
}
}
return super.onAccessDenied(request, response);
}
TokenFilter.java 文件源码
项目:automat
阅读 29
收藏 0
点赞 0
评论 0
public void doFilter(ServletRequest servletRequest, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
if (isWhiteReq(request.getRequestURI())) {
chain.doFilter(request, response);
} else {
String token = request.getHeader("token");
if (StringUtils.isNotBlank(token)) {
try {
Token tokenInfo = TokenUtil.getTokenInfo(token);
if (tokenInfo != null) {
Long now = System.currentTimeMillis();
if (now - tokenInfo.getTime() < 1000 * 60 * 30) {
String value = tokenInfo.getValue();
TokenUtil.setTokenInfo(token, value);
WebUtil.saveCurrentUser(request, value);
}
}
} catch (Exception e) {
logger.error("token检查发生异常:", e);
}
}
// 响应
if (DataUtil.isEmpty(WebUtil.getCurrentUser(request))) {
response.setContentType("text/html; charset=UTF-8");
Map<String, Object> modelMap = InstanceUtil.newLinkedHashMap();
modelMap.put("httpCode", HttpCode.UNAUTHORIZED.value());
modelMap.put("msg", HttpCode.UNAUTHORIZED.msg());
modelMap.put("timestamp", System.currentTimeMillis());
PrintWriter out = response.getWriter();
out.println(JSON.toJSONString(modelMap));
out.flush();
out.close();
} else {
chain.doFilter(request, response);
}
}
}
ProxyFilter.java 文件源码
项目:lemon
阅读 29
收藏 0
点赞 0
评论 0
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (enable) {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String contextPath = req.getContextPath();
String requestUri = req.getRequestURI();
String path = requestUri.substring(contextPath.length());
// 如果在黑名单中,直接略过
if (isExcluded(path)) {
chain.doFilter(request, response);
return;
}
// 如果符合redirect规则,进行跳转
if (urlPatternMatcher.shouldRedirect(path)) {
res.sendRedirect(contextPath + path + "/");
return;
}
// 如果都没问题,才会继续进行判断
if (urlPatternMatcher.matches(path)) {
filter.doFilter(request, response, chain);
} else {
chain.doFilter(request, response);
}
} else {
chain.doFilter(request, response);
}
}
CORSFilter.java 文件源码
项目:ServiceServer
阅读 38
收藏 0
点赞 0
评论 0
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
String ori = req.getHeader("Origin");
if (ori != null && allowedOrigins.contains(ori)) {
HttpServletResponse res = (HttpServletResponse)response;
res.setHeader("Access-Control-Allow-Origin", ori);
res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
res.setHeader("Access-Control-Max-Age", "3600");
res.setHeader("Access-Control-Allow-Headers", "x-requested-with");
res.setHeader("Access-Control-Allow-Credentials", "true");
}
chain.doFilter(request, response);
}
RestAsyncListener.java 文件源码
项目:incubator-servicecomb-java-chassis
阅读 33
收藏 0
点赞 0
评论 0
@Override
public void onTimeout(AsyncEvent event) throws IOException {
// in this time, maybe:
// 1.invocation in executor's queue
// 2.already executing in executor
// 3.already send response
// to avoid concurrent, must lock request
ServletRequest request = event.getSuppliedRequest();
HttpServletRequestEx requestEx = (HttpServletRequestEx) request.getAttribute(RestConst.REST_REQUEST);
synchronized (requestEx) {
ServletResponse response = event.getAsyncContext().getResponse();
if (!response.isCommitted()) {
LOGGER.error("Rest request timeout, method {}, path {}.", requestEx.getMethod(), requestEx.getRequestURI());
// invocation in executor's queue
response.setContentType(MediaType.APPLICATION_JSON);
// we don't know if developers declared one statusCode in contract
// so we use cse inner statusCode here
((HttpServletResponse) response).setStatus(ExceptionFactory.PRODUCER_INNER_STATUS_CODE);
PrintWriter out = response.getWriter();
out.write(TIMEOUT_MESSAGE);
response.flushBuffer();
}
request.removeAttribute(RestConst.REST_REQUEST);
}
}
LoginFilter.java 文件源码
项目:ChemistryAdministrativePortal
阅读 27
收藏 0
点赞 0
评论 0
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
HttpServletRequest loginRequest = (HttpServletRequest) request;
if((User)loginRequest.getSession().getAttribute("user") != null) {
chain.doFilter(request, response);
}
else {
loginRequest.getRequestDispatcher("/index.jsp").forward(request, response);
}
}