1

強いテキスト私は新しいので、検証する適切な方法が必要です。私はついていきます

5行コード。httpsession はありませんが、依然として予定.jspに行きます。なんでそうなの?セッションが存在するかどうかを確認する方法をフォローしましたか?

セッションを行っています。org.apache.catalina.session.StandardSessionFacade@3b59e880 しかし、ユーザーはログインしていません...

します。しかし、なぜ、どのようにしてそれが得られたのかわかりませんか?

if (request.getSession(false) == null) {
    request.getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
} else if (request.getSession(false) != null) {
    request.getServletContext().getRequestDispatcher("/appointment.jsp").forward(request, response);
}
4

4 に答える 4

2

ユーザーがログインした後、セッションは作成されません。ブラウザーからコンテナーへの最初の要求で作成されます。これにより、コンテナは同じブラウザからの後続のリクエストを追跡できます。これは通常、一意の ID (セッション ID) を持つ Cookie を使用して実装されます。

それでも、ユーザーのログアウト時に何が起こっているかによって異なりますか? session.invalidate() を呼び出していますか。セッションオブジェクトがnullでないからといって、ユーザーが認証されたとは言えません。

于 2012-12-28T14:46:23.593 に答える
1

常に HttpSession オブジェクトが存在します (常にではありませんが、ほとんどの場合)。これは、認証されたユーザーの指標ではありません。

セッション属性を設定する必要があります。「認証済み」は、このセッションが認証済みかどうかのフラグを立てます。

これを追加するには、request.getSession().setAttribute(...) を呼び出します。

于 2012-12-28T14:52:56.470 に答える
1

デフォルトでは、JSP はセッションを作成します。おそらく、ログイン ページでそのような動作は望ましくないため、次のように page ディレクティブを使用しますlogin.jsp

<%@ page session="false" %>

また、ログインが成功する前にアクセスされる他の JSP がセッションを作成しないようにする必要もあります。

于 2012-12-28T14:57:59.487 に答える
0
if (request.getSession(false).getAttribute("userLoggedIn") != null ) {
    if((Boolean)request.getSession(false).getAttribute("userLoggedIn") ) {
        request.getServletContext().getRequestDispatcher("/appointment.jsp").forward(request, response);
    }
} else {
    request.getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
}
于 2012-12-28T18:59:31.390 に答える