[Seasar-user:8968] [Teeda]ログイン認証のIntercepter

fujihara [E-MAIL ADDRESS DELETED]
2007年 7月 5日 (木) 18:58:57 JST


fujiharaです。
Churaプロジェクトで社内システム開発してます
Teeda1.07+S2DAO1.043の環境で開発しています。
初歩的な質問があります。

画面遷移のprerender()ごとにログインしているか
判断するIntercepterをAOPしたいのですが
うまくいきません。

-----------Intercepter-----------
package jp.roaso.interceptor;

import javax.servlet.http.HttpSession;

import jp.roaso.exception.RsbsLoginAuthException;
import jp.roaso.web.jp.roaso.basic.RsbsConstant;

import org.aopalliance.intercept.MethodInvocation;
import org.seasar.framework.aop.interceptors.AbstractInterceptor;
import org.seasar.framework.container.S2Container;

public class RsbsLoginAuthInterceptor extends AbstractInterceptor {

 private static final long serialVersionUID = 1L;
 private S2Container container;

 /* (non-Javadoc)
  * @see 
org.aopalliance.intercept.MethodInterceptor#invoke(org.aopalliance.intercept.MethodInvocation)
  */
 public Object invoke(MethodInvocation invocation) throws Throwable {
  Object ret = null;
  Boolean loginFlg = (Boolean) 
getSessionAttribute(RsbsConstant.SESSION_BIND_LOGIN);
  System.out.println("### BEGIN RsbsLoginAuthInterceptor ###");
  if (loginFlg == null || !loginFlg.booleanValue()) {
   throw new RsbsLoginAuthException();
  }
  Throwable cause = null;
  try {
   ret = invocation.proceed();
  } catch (final Throwable t) {
   cause = t;
  }
  System.out.println("### END RsbsLoginAuthInterceptor ###");
  if (cause != null) {
   throw cause;
  }
  return ret;
 }

 public S2Container getContainer() {
  return this.container;
 }

 public void setContainer(S2Container container) {
  this.container = container.getRoot();
 }

 private Object getSessionAttribute(String key) {
  HttpSession session = (HttpSession) container.getExternalContext()
    .getSession();
  return session.getAttribute(key);
 }
}
---------------------------------------

--------------app_aop.dicon--------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
 "http://www.seasar.org/dtd/components24.dtd">
<components namespace="app_aop">
 <include path="convention.dicon"/>
 <component name="actionSupportInterceptor" 
class="org.seasar.teeda.extension.interceptor.ActionSupportInterceptor" />
 <component name="appFacesExceptionThrowsInterceptor" 
class="org.seasar.teeda.core.interceptor.AppFacesExceptionThrowsInterceptor" 
/>
<!-- 追加部分 -->
 <component name="loginAuthInterceptor" 
class="jp.roaso.interceptor.RsbsLoginAuthInterceptor" />
<!-- 追加部分 -->
</components>
---------------------------------------

--------------customizer.dicon-----------

  <!-- 追加部分 -->
  <component name="authAspectCustomizer" 
class="org.seasar.framework.container.customizer.AspectCustomizer">
 <initMethod name="addInterceptorName">
  <arg>"app_aop.loginAuthInterceptor"</arg>
 </initMethod>
 <property name="pointcut">"prerender"</property>
  </component>

  <!-- 追加部分 -->


---------------------------------------

インターセプトがうまくいけばEclipsenoコンソールに
### BEGIN RsbsLoginAuthInterceptor ###
### END RsbsLoginAuthInterceptor ###

と出るはずのなのですが全く出ません。
何が間違っているのでしょうか?

申し訳ありませんが宜しくお願いします。 



Seasar-user メーリングリストの案内