Java源码示例:org.springframework.security.web.firewall.FirewalledRequest

示例1
private ResponseEntity<ModelMap> error(Exception exception, HttpServletRequest req, ModelMap model) {
    String url = req.getRequestURL().toString();

    // для "not found" запросов вытаскиваем доп инфо
    if (req instanceof SecurityContextHolderAwareRequestWrapper) {
        ServletRequest request = ((SecurityContextHolderAwareRequestWrapper) req).getRequest();
        if (request instanceof FirewalledRequest) {
            ServletRequest request2 = ((FirewalledRequest) request).getRequest();
            if (request2 instanceof Request) {
                url = String.format("%s [%s]",
                        url, ((Request)request2).getOriginalURI());
            }
        }
    }

    ModelAndView view = ticket.get(url, exception);
    model.mergeAttributes(view.getModel());

    return new ResponseEntity<>(model,
            HttpStatus.INTERNAL_SERVER_ERROR);
}
 
示例2
private String error(Exception exception, HttpServletRequest req, ModelMap model) {
    String url = req.getRequestURL().toString();

    // для "not found" запросов вытаскиваем доп инфо
    if (req instanceof SecurityContextHolderAwareRequestWrapper) {
        ServletRequest request = ((SecurityContextHolderAwareRequestWrapper) req).getRequest();
        if (request instanceof FirewalledRequest) {
            ServletRequest request2 = ((FirewalledRequest) request).getRequest();
            if (request2 instanceof Request) {
                url = String.format("%s [%s]",
                        url, ((Request)request2).getOriginalURI());
            }
        }
    }

    ModelAndView view = ticket.get(url, exception);
    model.mergeAttributes(view.getModel());

    return view.getViewName();
}
 
示例3
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
        throws IOException, ServletException {

    if (request instanceof FirewalledRequest) {
        boolean isMustChangePassword =
                SecurityContextHolder.getContext().getAuthentication().getAuthorities().stream().anyMatch(
                        authority -> IdRepoEntitlement.MUST_CHANGE_PASSWORD.equals(authority.getAuthority()));

        FirewalledRequest wrappedRequest = FirewalledRequest.class.cast(request);
        if (isMustChangePassword && !"POST".equalsIgnoreCase(wrappedRequest.getMethod())
                && !"/users/self/changePassword".equals(wrappedRequest.getPathInfo())) {

            throw new AccessDeniedException("Please change your password first");
        }
    }

    chain.doFilter(request, response);
}
 
示例4
@Override
public FirewalledRequest getFirewalledRequest(
	HttpServletRequest request) throws RequestRejectedException {
	return super.getFirewalledRequest(new PortalHttpServletRequest(request));
}