Tag: 拦截器

使用哪一个: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配置文件中的拦截器。 决定使用哪一个真是一种蹩脚的方式,我的好奇心在这里杀了我。 有人可以分享你对此的看法吗? 你们用哪一个? 谢谢。

如何使用Annotation链接自定义拦截器

我手头有一个自定义拦截器,我希望它与使用注释的Action类相关联。 我使用struts.xml中声明的那个添加了interceptor-ref但是得到了exception, “SEVERE: Exception starting filter Struts2 Unable to load configuration. – [unknown location]” 我的Action类如下, @Action(value = “/login”, results = { @Result(name = “success”, location = “/Welcome.jsp”), @Result(name = “error”, location = “/Login.jsp”) }, interceptorRefs = { @InterceptorRef(“defaultStack”), @InterceptorRef(“myLogging”)} ) public String validateCredentials() { if (this.userName.equals(“Raj”) && this.password.equals(“aspire”)) { return “success”; } else { // […]

MVC拦截器与Spring安全filtervs其他东西……?

我在我的Web应用程序中使用Spring-MVC和Spring Security。 它包括用户注册页面和私人用户面板。 我现在设置了以下url模式: whatever/myapp/login用户登录 whatever/myapp/register?step=1开始注册 whatever/myapp/account/**私人区域视图(页面) 在注册后流程完成时显示的whatever/myapp/pending视图 whatever/myapp/blocked帐户被阻止的视图 如果注册失败, whatever/myapp/register/retry ,都允许重试 基本上,下面的这些URL应该要求用户身份validation,即需要登录: whatever/myapp/account/** (私人区域页面) whatever/myapp/pending (此页面有一个定时器设置为重定向到/ account / home) whatever/myapp/register/retry 使用Spring安全性非常简单。 但是,无论通过Spring安全性进行用户身份validation,私有区域页面都应该是可访问的,具体取决于用户的当前帐户状态(存储在我的数据库中)。 更具体地说:如果用户试图访问私有区域( /account/** )中的任何内容,则应根据状态向他显示相应的视图(重定向到适当的页面)。 我定义了这些状态: suspended – 与待审视图有关 enabled – 允许完全访问权限 disabled – 这里不相关 retry_allowed – 与重试视图有关 blocked – 与帐户被阻止的视图有关 目前,我有一个MVC拦截器设置到/account/** ,它检查用户状态,并重定向到适当的页面,但不知怎的,我觉得这不是真正理想或适当的解决方案,因为我面临奇怪行为,就像多个控制器调用一样…而且我不太确定何时在preHandle()方法中返回true / false 。 这是拦截器的代码片段: @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse […]

在Struts2拦截器中更改请求参数值

有人知道是否可以在Struts2拦截器中更改/删除请求参数值? 请求参数Map是UnmodifiableMap一个实例,因此看起来它不能在拦截器中操作。 更新: 我正在使用Liferay,所以uParamsMap将是一个UnmodifiableMap public String intercept(ActionInvocation invocation) throws Exception { final ActionContext context = invocation.getInvocationContext(); PortletRequest request = (PortletRequest) context.get(REQUEST); Map uParamsMap = request.getParameterMap(); return invocation.invoke(); }

Spring – 我如何调整SoapEnvelopeLoggingInterceptor以比标准outout更正式地记录数据到日志文件

我正在尝试对我的Spring Web服务请求/响应执行正式审计。 我在Spring配置中有这个: 这很好,并将请求和响应记录到我的JBoss日志文件中。 我想要的是能够适应这一点并将这些请求/响应更清晰地记录下来,如何获取数据,这样我就可以写入数据库中的审计记录。 我如何调整上面这一点,以便我可以映射到我的一个bean或类似的东西,并获取请求和响应中的数据?

拦截器在Struts 2.0中登录时使用

我正在设计一个基本应用程序,其中User提供了他的用户ID和密码,如果登录成功,他将被重定向到主页。 现在进行validation,如果用户标识和密码不为空,我想使用拦截器。 但我无法找到如何在拦截器中访问请求参数的值。 JSP代码 模型 @Entity @Table(name=”login”) public class Login implements Serializable { public Login() { } public Login(String userId1, String userPassword1) { userId1 = userId; userPassword1 = userPassword; } private String userId; private String userPassword; @Id @Column(name=”USERID”, nullable=false) public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } […]

当注释具有参数时,CDI拦截器不起作用

我正在尝试实现@Restricted注释,以用户只能在登录并具有特定角色时才能访问它们的方式来保护控制器方法。 我在使用JSF和CDI的Tomcat 7上,所以没有EJB。 只要注释接口未指定任何参数,就会调用拦截器。 只要我添加@Nonbinding Role value() default Role.ADMIN; 参数,拦截器和控制器方法都不执行。 也没有错误或例外。 这是我的代码,我真的不知道它有什么问题: 注解: @InterceptorBinding @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.TYPE, ElementType.METHOD }) public @interface Restricted { @Nonbinding Role value() default Role.ADMIN; // ### } 拦截器: @Interceptor @Restricted public class RoleBasedRestrictingInterceptor implements Serializable { @Inject ISecurityManager security; @AroundInvoke public Object intercept(final InvocationContext ctx) throws Exception { final Restricted annotation […]

CXF / JAX-RS:从拦截器返回自定义响应

在REST调用期间发生exception时,我们需要返回自定义错误代码和错误消息。 我们已经创建了一个exception映射器提供程序,它适用于应用程序代码中的exception。 但是,当从CXF代码发生exception时(例如,形成我编写的CustomValidationInterceptor),它不起作用。 例如,如果我请求无效路径参数(例如无效的phoneNumber)。 在这种情况下,我们需要以JSON格式返回自定义错误代码和错误消息,但即使我们创建了一个exception映射器提供程序来处理WebApplicationException,它也不起作用。 有没有办法处理来自cxf拦截器的exception并返回对用户的响应,如下所示? { “errorDetail”: { “errorCode”: “404”, “errorMessage”: “Bad Request” } } 我的CustomValidationInterceptor的代码片段: public class CustomValidationInterceptor extends AbstractPhaseInterceptor{ public CustomValidationInterceptor() { super(Phase.PRE_INVOKE); // Put this interceptor in this phase } public void handleMessage(Message message) { MetadataMap metadataMap = (MetadataMap) message.get(“jaxrs.template.parameters”); if(null != metadataMap) { List list = metadataMap.get(“phoneNumber”); if(null != list) […]

Spring JPA / Hibernate EmptyInterceptor没有注入Entitymanager / Spring bean

专家/大师/友 我们正在使用Spring 3.2,JPA 2,Hibernate 4.2组合并面对这个奇怪的空指针问题,同时尝试将任何spring注释bean注入EmtyInterceptor,如下所示。 我们已经尝试过注释这个bean以及一个spring bean但没有运气。 任何帮助解决这个难题的人都非常感谢。 import javax.inject.Inject; import javax.inject.Named; import org.hibernate.EmptyInterceptor; import org.hibernate.type.Type; import org.springframework.transaction.annotation.Transactional; … @Named @Transactional public class AuditEmptyInterceptor extends EmptyInterceptor { /** * */ private static final long serialVersionUID = 1L; // Didnt inject – Null @PersistenceContext private EntityManager entityManager; // Didnt inject – Null //@PersistenceUnit //private EntityManagerFactory entityManagerFactory; […]

Struts2从登录拦截器重定向

我们的应用程序要求用户登录以查看任何内容。 LoginInterceptor拦截对所有页面的访问,如果用户没有有效会话,则会调出登录表单。 我希望拦截器在显示登录表单之前记住原始请求URI,并在登录表单validation成功时重定向到它。 我尝试跟踪Struts 2 Redirect以在身份validation拦截器之后纠正操作 。 @Service @Results({ @Result(name = “redirect”, type = “redirect”, location = “${savedUrl}”) }) public class LoginInterceptor extends AbstractInterceptor { //… private String savedUrl; //… @Override public final String intercept(final ActionInvocation invocation) throws Exception { // … savedUrl = (String) session.getAttribute(“savedUrl”); // … if (processLogin(request, session)) { // validate login […]