среда, 28 августа 2013 г.

Незалогиненый пользователь не попадал в Spring Portlet Controller

Все оказалось потому, что был определен интерсептор для обработки запросов только для залогиненых юзеров, который подвязывался на DefaultAnnotationHandlerMapping .



Выгдялит все это счастье вот так:
<beans xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <context:annotation-config>


  <context:component-scan base-package="com.playtech.portlet.bonus.bigpromotion">

  <bean class="com.playtech.portal.common.spring.RequireLoggedInInterceptor" id="requireLoginInterceptor">
  <bean class="com.playtech.portal.common.spring.PlaytechViewNameInterceptor" id="viewNameInterceptor">

  <bean class="org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="interceptors">
       <list>
         <ref bean="requireLoginInterceptor">
         <ref bean="viewNameInterceptor">
       </ref></ref></list>
    </property>
  </bean>

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver" p:prefix="/jsp/bigpromotion/" p:suffix=".jsp" p:viewclass="org.springframework.web.servlet.view.JstlView">

</bean></bean></bean></context:component-scan></context:annotation-config></beans>

Вот код интерсептора:

package com.playtech.portal.common.spring;

import com.playtech.portal.liferay.util.PlaytechUserHelper;
import com.playtech.portlet.PlaytechUser;
import org.springframework.web.portlet.handler.HandlerInterceptorAdapter;

import javax.portlet.*;

public class RequireLoggedInInterceptor extends HandlerInterceptorAdapter {

  @Override
  public boolean preHandleAction(ActionRequest request, ActionResponse response, Object handler) throws Exception {
    return isLoggedIn(request);
  }

  @Override
  public boolean preHandleRender(RenderRequest request, RenderResponse response, Object handler) throws Exception {
    return isLoggedIn(request);
  }

  private boolean isLoggedIn(PortletRequest request) {
    if (PortletMode.EDIT.equals(request.getPortletMode())) {
      return PlaytechUserHelper.isLoggedIn(request);
    } else {
      return PlaytechUser.isLoggedIn(request);
    }
  }
}

Комментариев нет:

Отправить комментарий