[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 メーリングリストの案内