1

JSPを使用するSpringアプリがあります。そして、1ページをリダイレクトする必要がありますが、1回だけです。これは春のセキュリティによるものです。ユーザーがこのページにアクセスしたら、リダイレクトを呼び出してログアウトする必要がありますが、同じページにとどまる必要があります。java、html、またはjsを介してのみこれを行う方法はありますか?あるいは、間違った質問をしたかもしれません-これを行う方法はあるはずですが、私はフロントエンドテクノロジーにあまり詳しくないので、誰かが私に示すコードを投稿して、これを作成する方法を教えていただければ幸いです仕事..ありがとう:)

したがって、ユースケース:ユーザーはmywebsite.com/loginと入力します->彼がすでにログインしている場合は、リダイレクトを呼び出してログアウトする必要があります->同じサイトが表示されますが、リダイレクトは行われません。

PS:ユーザーを別のサイトにリダイレクトすることはできません。同じソースコードの同じサイトである必要があります。

4

2 に答える 2

0

あなたのユースケースを理解していれば、ログインアクションの一部としてユーザーをログアウトしたいと思います(つまり、ログアウトプロセスを除外し、ログアウトアクションとログインアクションの両方から呼び出します)。

それが不可能な場合 (そして、そうしない理由がわからない場合)、「一度だけリダイレクトする」部分ではなく、「彼がログインしている場合はリダイレクトする」部分に焦点を当てます-前者は非常に簡単に確認できますログイン状態を追跡するためにある種のセッションを使用していると仮定すると、コードをほとんど変更する必要はありません。

免責事項: 私は Sprint についてほとんど何も知りません。これらはすべて、従来の Web アプリケーションで機能する非常に一般的なコメントです。

于 2013-03-22T05:33:13.987 に答える
-1

filter を使用できます。

@Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
            HttpServletRequest test1=    (HttpServletRequest) arg0;

         test1.getRequestURL()); it gives  http://localhost:8081/applicationName/menu/index.action
         test1.getRequestURI()); it gives applicationName/menu/index.action
         String pathname = test1.getServletPath()); it gives //menu/index.action


        if(pathname.equals("//menu/index.action")){ 
            arg2.doFilter(arg0, arg1); // call to urs servlet or frameowrk managed controller method


            // in resposne 
           HttpServletResponse httpResp = (HttpServletResponse) arg1;
           RequestDispatcher rd = arg0.getRequestDispatcher("another.jsp");  redirect to another page at response time 
           rd.forward(arg0, arg1);





    }

フィルター マッピングを web.xmlに入れることを忘れない でください<dispatcher>FORWARD</dispatcher>。フィルターを使用したくない場合は、urs コントローラー メソッドから別の jsp にリダイレクトできます。

于 2013-03-22T05:34:33.133 に答える