Struts 1で作成されたレガシーアプリケーションがあります。追加するように求められた唯一の機能は、いくつかのアクションを保護することです。現在、どのユーザーも自分のやりたいことが何でもできます。アイデアは、すべてのユーザーがデータを表示できるようにすることですが、変更操作をブロックします。つまり、ユーザーがログインする必要のあるデータを変更します。
Struts2にはインターセプターがあることを知っているので、それらを必要なアクションにアタッチし、必要に応じてユーザーをログインページに転送することができます。しかし、Struts 1アプリケーションで同様のことをどのように行うことができますか?
私の最初のアイデアは、独自の抽象的なActionクラスを作成することでした。
public class AuthenticatedAction {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest theRequest,
HttpServletResponse theResponse) {
if (!logged) {
// forward to log in form
} else {
doExecute(mapping, form, request, response);
}
}
public abstract ActionForward doExecute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest theRequest,
HttpServletResponse theResponse);
}
次に、認証が必要なすべてのアクションをから変更します
extends Action
に
extends AuthenticatedAction
次に、ログインフォーム、ログインアクション(認証を実行し、このステータスをセッションに入れる)を追加し、JSPヘッダータイルを変更して、認証ブロックを表示します(例:「あなたは(ログインしていません)/」、ログイン/ログアウト。私が推測するように、これは問題を解決するはずです。
- それでも問題が解決しない場合は、その理由を説明してください。
- これを行うためのより良い(インターセプターのようによりエレガントな)方法はありますか?
前もって感謝します。