Tag: servlet filters

覆盖JSP servlet(filter“* .jsp”)以包装在身份validation模型中

可以以某种方式扩展在* .jsp上过滤的JSP servlet(在Tomcat 6中的org.apache.jasper.servlet.JspServlet),因此每当有人进入JSP页面时我都可以进行一些服务器端身份validation来检查用户是否可以查看页面。 我们当前的技术是一个常见包含中的taglib,它被导入到每个JSP页面中,但它不是很优雅。 这里的关键是我不想重新发明轮子并担心将JSP编译成Servlet,理想情况下我希望用super.meth()委托每个方法。 我一直在搜索Google,但我不知道使用正确的关键字。 任何包含JSP和Servlet的内容都会返回初学者教程。 谢谢, 约翰

Java Servlet Filter重定向问题

我的身份validationfilter出了问题。 当筛选器重定向到登录页面时,登录JSP中不会显示任何图像。 但是,如果我在登录后手动进入登录页面,则会显示图像。 我不明白为什么会这样! 我感谢任何帮助。 🙂 AuthFilter筛选: if (authorized == null && path.indexOf(“Auth”) == -1 && path.indexOf(“Login”) == -1 ) { httpResponse.sendRedirect(“Login”); return; } else { chain.doFilter(request, response); } 登录servlet: // Just using a servlet in case I want more data sent to the jsp Dispatcher.dispatch(“views/login.jsp”, request, response); login.jsp的: jsp在其他方面是“正常的”,所有必需的HTML标记都存在。 “images”文件夹位于项目的默认“web”文件夹中,与所有其他jsp和javascripts一起。 在此先感谢您的帮助。 🙂 – Stian

使用哪一个:OpenSessionInViewInterceptor或OpenSessionInViewFilter?

我很难决定使用哪个“Open Session In View”:使用Spring MVC的拦截器配置OpenSessionInViewInterceptor或在web.xml的filter中配置OpenSessionInViewFilter? 根据我的研究,他们做了几乎相同的事情,但我试图了解每种类型的差异和用法。 两者之间最大的区别是那些不能在web.xml中使用filter的人(比如servlet 2.2及更早版本),他们唯一的选择就是使用OpenSessionInViewInterceptor。 不知何故,我倾向于拦截器只是因为我必须为我的项目创建一个自定义拦截器,所以我想在Spring MVC配置文件中对所有这些“filter”进行分组,而不是在web.xml和我的自定义中使用OpenSessionInViewFilter Spring MVC配置文件中的拦截器。 决定使用哪一个真是一种蹩脚的方式,我的好奇心在这里杀了我。 有人可以分享你对此的看法吗? 你们用哪一个? 谢谢。

如何在ContainerRequest中获取会话对象以使用注释@RolesAllowed(Role_user)?

我正在使用带引擎的App Engine构建应用程序。 我想使用允许在请求中创建filter的注释@RolesAllowed(Role_user) 。 问题是我们需要配置SecurityContextFilter类。 我的目标是获取存储在会话中的用户的id ,然后直接在function : public ContainerRequest filter(ContainerRequest request)检查它们的角色function : public ContainerRequest filter(ContainerRequest request)我的类SecurityContextFilter function : public ContainerRequest filter(ContainerRequest request) 。 我需要注入HttpRequest来获取会话,但是当我注入它时,我得到一个exceptionJava.lang.Null 。 我想在ContainerRequest类中获取一个会话Object。 我怎样才能做到这一点? 编辑: 我已经找到了解决这个问题的方法,但我不知道这是否干净:你可以直接在函数中注入HttpRequest:isUserInRole(_role)所以我使用这个,然后我通过session得到我的userId然后得到角色用户我检查是否匹配_role并返回true或false。

Spring拦截器与servletfilter

Spring拦截器比servletfilter有什么优势?

具有相同url映射的多个filter

是否可以使用两个具有相同url-mapping的filter? TeeFilter filter1r TeeFilter /* CredentialsFilter CredentialsFilter filter2 CredentialsFilter /*

如何在Java中重定向请求时在HTTP标头中传递数据

是否可以在HTTP Header中传递一些数据,同时将请求从一个服务器重定向到另一个服务器。 这是我的场景 ,我有一个通用filter,每个请求都通过它。 现在,基于某些条件,我使用API objHttpServletResponse.sendRedirect(strURL)将请求重定向到某个不同的服务器。 但是,问题是,当我在响应头中设置一些数据时,如objHttpServletResponse.setHeader(“Key”, “Value”); 这在重定向的服务器中不可用。 所以,我的问题是, 1.重定向请求时,有没有办法在标头中传递一些数据? 2.如果没有,在重定向请求时发送一​​些数据的其他可能方法是什么? 请注意:其他几种方式,比如 使用URL参数: objHttpServletResponse.sendRedirect(strURL+”?param=”+ strParamValue); 要么 使用session: HttpSession session = httpRequest.getSession(); session.setAttribute(“Key”, “Value”); HttpSession session = httpRequest.getSession(); session.setAttribute(“Key”, “Value”); 不是我所期待的。

捕获所有HTML输入内容以进行操作的Catch-all servletfilter只能间歇性地工作

我需要一个servletfilter来捕获所有输入,然后修改输入,在每个表单中插入一个特殊的标记。 想象一下,filter与所有请求相关联(例如url-pattern=* )。 我有捕获内容的代码,但似乎RequestWrapper不足以捕获所有输入。 某些输入返回零字节,然后我无法将该内容“流”回给用户。 例如,我们仍在使用Struts 1.3.10,并且任何Struts代码都没有正确“捕获”,我们得到零字节内容。 我相信这是因为Struts如何处理前锋。 如果请求中涉及转发,我想知道下面的捕获代码是否有效。 以下是所有代码,您是否有一种方法可以捕获用于流式传输给用户的任何类型的内容。 Filter mybrokenCaptureHtml.TokenFilter Filter /* package mybrokenCaptureHtml; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; public class TokenFilter implements Filter { @Override public void destroy() { } public […]

是否可以使用Sitemesh直接在JSP中定义装饰器?

我知道我应该在配置文件或我自己的ConfigurableSiteMeshFilter子类中定义装饰器。 例如: public class SitemeshFilter extends ConfigurableSiteMeshFilter { @Override protected void applyCustomConfiguration(final SiteMeshFilterBuilder builder) { builder.addDecoratorPath(“/*”, “/WEB-INF/views/layouts/default.jsp”); } } 这对我有用,但这并不完美。 我可以在JSP文件中定义直接使用的装饰器吗? Home Hello world! ${body}

没有web.xml的Spring安全自定义身份validationfilter

使用注释和java配置,我不太清楚如何为spring security注册一个重写的filter。 我想要实现的是在不显示登录表单的情况下进行自动登录,因为此时用户已经过身份validation。 因此,只会读取标题参数并使用spring security进行授权。 这是我正在尝试的简化版本,Spring安全性正常工作,除了有时显示登录屏幕。 引导BypassLoginFilter是我需要的全部内容。 另外在某处读取http自动配置应该关闭这种行为,但不知道如何在纯java配置中实现。 SecurityWebApplicationInitializer.java import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer{ } SecurityConfig .java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.logout.LogoutFilter; @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(securedEnabled=true, prePostEnabled=true) public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { […]