0

ユーザー名、パスワードをチェックし、ユーザーの有効期限が現在の日付よりも後の日付かどうかをチェックするカスタム ログイン インターセプターの作成方法を誰かが説明してくれませんか。JavaプログラミングとStruts 2は初めてです...ステップバイステップの情報をいただければ幸いです。手動のjdbc接続でユーザー名などの情報を取得します...そのためのjndiセットアップがあります。これには、セッション管理も必要です。

したがって、次のコード サンプルを段階的に使用するとよいでしょう。

1) jndi を使用して DB からユーザー名などを取得する dao

2) セッション対応のログイン アクション

3) インターセプター

4) login.jsp

5) インターセプターの struts.xml 定義

6) task.jsp および task2.jsp (ユーザーがログインしている場合にのみ表示される内部ページ)

ありがとうございました!

4

1 に答える 1

5

あなたは正しい方向に進んでいます。

そのトピックに関する多くの記事があります(グーグルそれ)。いずれかを選択して、それを理解してみてください。インターセプター部分は次のようになります。

public String intercept (ActionInvocation invocation) throws Exception {
    // Get the action context from the invocation so we can access the
    // HttpServletRequest and HttpSession objects.
    final ActionContext context = invocation.getInvocationContext ();
    HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
    HttpSession session =  request.getSession (true);

    // Is there a "user" object stored in the user's HttpSession?
    Object user = session.getAttribute (USER_HANDLE);
    if (user == null) {
        // The user has not logged in yet.

        // Is the user attempting to log in right now?
        String loginAttempt = request.getParameter (LOGIN_ATTEMPT);
        if (! StringUtils.isBlank (loginAttempt) ) { // The user is attempting to log in.

            // Process the user's login attempt.
            if (processLoginAttempt (request, session) ) {
                // The login succeeded send them the login-success page.
                return "login-success";
            } else {
                // The login failed. Set an error if we can on the action.
                Object action = invocation.getAction ();
                if (action instanceof ValidationAware) {
                    ((ValidationAware) action).addActionError ("Username or password incorrect.");
                }
            }
        }

        // Either the login attempt failed or the user hasn't tried to login yet, 
        // and we need to send the login form.
        return "login";
    } else {
        return invocation.invoke ();
    }
}

上記のコードサンプルはこの記事の一部であり、他の手順もあります。

私がお勧めするもう1つの方法は、SpringセキュリティをStruts 2と統合することです。これにより、セキュリティで保護され、実績のある構成可能なセキュリティスタックを取得できます。

于 2012-09-04T16:51:57.000 に答える