--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2012-12-01(Sat)

SAStrutsでInterceptorを使ってSessionを確保する

SAStrutsでログイン認証した後の画面はログインしていないユーザーに見せないように
しなければならない。
SAStrutsのInterceptorを使って実現したのでメモる。

まず、ほとんどここ(セッションによるログイン認証を可能にする)を参考にしたということをメモる。めちゃくちゃわかりやすくて感謝感激です。

画面としては以下の3画面とする。
 ユーザーログイン画面(Sessionなし)
 ログイン後のMypage画面(Sessionあり)
 ログイン後のユーザー情報登録画面(Sessionあり)

必要なパーツ

- Entity
ユーザー登録用(User)
ユーザー情報登録用(Reguser)
- セッション保持のためのDTO
ユーザー登録用(UserDto)
ユーザー情報登録用(ReguserDto)
※DtoはClassの頭に以下のアノテーションを追加する。
@Component (instance = InstanceType. SESSION)



InterCeptorクラス
public class LoginConfirmInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;

@Resource
protected UserDto userDto ;

public Object invoke(MethodInvocation invocation) throws Throwable {
// ここの条件がtrueであればログイン済みと判断
// ここの条件がfalseであればログインページへ移動
return (!isExecuteMethod(invocation) || isLoggedIn()) ? invocation
.proceed() : "/login/" ;
}

private boolean isExecuteMethod(MethodInvocation invocation) {
return invocation.getMethod().isAnnotationPresent(Execute . class);
}

private boolean isLoggedIn() {
// Sessionにユーザー情報が登録されているかチェック
return (userDto != null && userDto .email != null);
}
}


InterCeptorの設定(customizer.dicon)
<components>
<include path="default-customizer.dicon"/>
<component name="actionCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
(省略)
<initMethod name="addCustomizer">
<arg>
<component class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptorName">"loginConfirmInterceptor"</property>

<property name="useLookupAdapter">true</property>

<!-- Session CheckするAction -->
<initMethod name="addClassPattern">
<arg>"tutorial.action"</arg>
<arg>"MypageAction"</arg>
</initMethod>
<initMethod name="addClassPattern">
<arg>"tutorial.action"</arg>
<arg>"ReguserAction"</arg>
</initMethod>

</component>
</arg>
</initMethod>
(省略)
</component>
(省略)
</components>


Session Timeoutはweb.xmlで行う(customizer.dicon)
<session-config>
<session-timeout>1</session-timeout>
</session-config>



参考:
[SAStruts][Interceptor]セッションによるログイン認証を可能にする

DTOとかの使い方
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

コメント

プロフィール

kumagonjp2

Author:kumagonjp2
Python,Django,R,Mongo,MySQL,Struts,Spring,データマイニングなどサーバー関係のメモを残していきます。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
雪が3Dで降るブログパーツ ver2

マウスで見る方向変えられます

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。