2017-08-21 12 views
0

おはようございます! 私はアクセスコントロールを持つアプリケーションを持っている、それは大丈夫 に取り組んでいる。しかし、ユーザは、彼が誰かが私はこの問題を解決する助けてもらえURLによるページアクセスの防止

へのアクセス権を持っていないブラウザやアクセスページ内のURLを書き込むことができますか?

以下は、私はあなたがページのアクセスを制御するために、1つのセキュリティフレームワークを使用することをお勧めの答えの前にフィルター

@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filter) throws IOException, ServletException { 
    HttpServletRequest req = (HttpServletRequest) request; 
    HttpSession session = req.getSession(); 

    if (session.getAttribute("sessionUser") != null 
      || req.getRequestURI().endsWith("Login.xhtml")) { 
     System.out.println("if"); 
     filter.doFilter(request, response); 
    } else { 
     System.out.println("else"); 
     HttpServletResponse res = (HttpServletResponse) response; 
     res.sendRedirect(req.getContextPath()+"/Login.xhtml"); 
    } 
} 
+0

URLアクセスによるセキュリティを処理するフィルタが必要な状況のようです。詳細については、[この質問](https://stackoverflow.com/questions/8480100/how-implement-a-login-filter-in-jsf)を参照してください。 – Bonifacio

+0

アクセス制御はどのように実装されていますか?どのフレームワークを使用しましたか?あなたの問題は、フィルタそのものよりも多くの質問に関連しています –

+0

メニューとボタンから画面が呼び出されたときにマイフィルタが機能します。 しかし、私はページからURLを取り出してブラウザに貼り付けるとうまくいかない。 ボタン/メニューからページが呼び出されたかどうか、またはブラウザにURLが貼り付けられているかどうかを確認するにはどうすればよいですか? –

答えて

0

の実装です。春の安全のような強力なもの。

しかし、この場合は、そのユーザーセッションのみが有効かどうかを確認しましたが、セッションに追加されたページまたはページ名には何も関係ありません。 ログインに成功した後、ユーザーがアクセスしたすべてのページ(名前など)を属性としてセッションに追加し、このフィルタでユーザーがアクセスを要求したページを確認する必要があります。 セッション属性にそのページが含まれている場合、dofilterは拒否ページにアクセスするためにelse redirectを呼び出しました。

+1

、またはJBoss PicketLink、Apache Shiro、または他のよく使われている/既知のもの – Kukeltje

関連する問題