0

現在、shiro とタペストリー セキュリティ プラグインを使用して、ネイティブ セッションを管理し、データを永続化しています。でセッションを取得すると、すべて正常に動作しSecurityUtils.getSubject().getSession()ます。ただし、これは、アプリケーションに shiro 固有のコードの断片が散りばめられていることを意味します。shiro はサーブレット セッション API を使用するため、アプリケーションに対して透過的な方法でこれを行う方法は@Persistあり@SessionStateますか?

4

2 に答える 2

2

私はあなたの質問を誤解しているかもしれませんが、リクエストを挿入し、それを使用してセッションのハンドルを取得できます。

@Inject
private HttpServletRequest httpRequest;

httpRequest.getSession();

@Persistこれにより、またはを使用できなくなるわけではありません@SessionState

于 2012-08-10T12:48:53.453 に答える
0

ラップされた HttpServletSession の代わりに shiro セッションを返すように TapestrySessionFactory を装飾しました。インターフェースは同一ではなかったため、(非常に) 単純な強制機能が必要でした。まさに必要なものが得られました。唯一の shiro 関連のコードは、AppModule 内の数行と、org.apache.shiro.session.Session を org.apache.tapestry5.services.Session に変換する分離された関数で構成されています。アプリの残りの部分では、以前と同じようにセッション機能 (注釈を含む) を使用しており、それらはすべて舞台裏で shiro によって管理されています。

于 2012-08-10T16:00:16.450 に答える