2

私はJavaでWebアプリケーションに取り組んでいます。URL への直接アクセスを防ぐために、セッションの検証をチェックするコードを使用しました。その顧客従業員アプリ。

ログインページを除くすべてのページに、ロールに応じてセッションを使用してメニュー項目が動的に生成される同じヘッダーがあります。ただし、従業員が URL に直接アクセスする場合は、顧客のみがアクセスできるようにする必要があります。URL には引き続きアクセスできます。このようなことがあってはなりません。

顧客に対してのみ有効な URL を使用して従業員が jsp に直接アクセスできないようにするにはどうすればよいですか?

4

4 に答える 4

2

フィルターを適用し、

public class SessionCheck implements Filter

{
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException
    {
        HttpServletRequest request = (HttpServletRequest) arg0;
        HttpServletResponse response = (HttpServletResponse) arg1;
        if(null==((String) request.getSession().getAttribute("SESSION_PARAM_CUSTOMERID")) || ((String) request.getSession().getAttribute("SESSION_PARAM_CUSTOMERID")).equals(""))
        {
            response.sendRedirect(PAGE_SIGN_IN);
            return;
        }
        arg2.doFilter(request, response);
    }

}

web.xml

<filter>
  <filter-name>SessionCheckFilter</filter-name>
  <filter-class>
    com.mycomp.filter.SessionCheck
  </filter-class>
</filter>

以下に示すように、各セキュア リクエスト URL をフィルタ マッピング タグでマッピングします。

 <filter-mapping>
      <filter-name>SessionCheckFilter</filter-name>
      <url-pattern>/personal-info</url-pattern>
    </filter-mapping>
于 2012-09-24T12:03:13.143 に答える
1

私があなたの必要性を理解しているのは、

  1. わかりにくいユーザーが来る-------表示------>ログインページ
  2. 顧客の役割を持つ認証済みユーザー-----display------>顧客に関連するメニュー項目
  3. ロールEmployeeを持つ認証済みユーザー-----display------>Employeeに関連するメニュー項目

この場合、あなたがすべきだと思うのは、

その時点で人がURLを入力したら、セッションがtrue/設定されているかどうかを確認します。このため、userNameなどの任意の変数をキーとして設定できます。

セッションが設定されていない場合は、共通のログインページを表示し、認証後にuserNameキーをセッションに設定します。それ以外の場合はそうではありません。

セッションが設定されている場合(userNameキーを再度チェックして、セッションが存在するかどうかを検証できます)、ユーザーの役割をチェックします。

ユーザーがロールCUSTOMERに属している場合------>それに応じて機能します。ユーザーがロールEMPLOYEEに属している場合------>それに応じて機能します。

于 2012-09-24T12:13:08.453 に答える
0

セッションが有効かどうかのみを確認しています。ユーザー名や顧客 ID などのセッション パラメータの 1 つを確認する必要があります。

于 2012-09-24T11:46:30.023 に答える
0

フィルタを使用して、認証されたリクエストのみがリソースにアクセスできるようにする

于 2012-09-24T11:43:22.747 に答える