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