2

イントラネットWebアプリケーションにアプリケーション管理セキュリティを使用しています。

web.xmlファイルに次のフィルターがあります。

<filter>
  <filter-name>employeeAccessFilter</filter-name>
  <filter-class>security.AuthorizationFilter</filter-class>
  <init-param>
      <param-name>roles</param-name>
      <param-value>employee</param-value>
  </init-param>
  <init-param>
      <param-name>onError</param-name>
      <param-value>../index.jsp</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>employeeAccessFilter</filter-name>
   <url-pattern>/corporate/*</url-pattern>
</filter-mapping>

index.htmlにはログインボックスが含まれています。ユーザーがログインすると、イントラネットのダッシュボードに移動します。フィルターはうまく機能します。

次の状況を見てください。

  • http://appname.com/corporate/page.do?id=6などのイントラネットページが記載されたメールが届きます。
  • 彼はリンクをクリックし、デフォルトのブラウザにCookieが保存され、自動的にログに記録され、ページが正しく表示されます。

だが:

  • http://appname.com/corporate/page.do?id=6のようなイントラネットページのリンクが記載されたメールが届きます。
  • 彼はリンクをクリックします。彼のデフォルトのブラウザにはアプリCookieがないため、自動的にログに記録されません。彼はログイン画面にリダイレクトされます。彼はログインしますが、リンクに記載されているページではなくダッシュボードに移動します。

これを解決する簡単な方法はありますか?

私は基本的に2つのアイデアを持っています:

B)-基本を使用-問題を解決するコンテナ管理のセキュリティ。

A)-認証フィルター内に、拒否されたURLをリクエスト属性として保存するメカニズムを実装します。-拒否されたURLをログインボックスの非表示フィールドとして配置します。-ログインロジックを変更して、常にダッシュボードではなくフィールドURLを使用するようにします。

どちらもちょっとした作業のようですか?誰かもっと良いアイデアがありますか?

4

1 に答える 1

1

ログインが必要なサイトのほとんどは、方法 A を使用しているようです。たとえば、スタック オーバーフローでは、ログインが必要なページにアクセスすると、にリダイレクトさ/users/login?returnurl=...returnurl、ログイン フォームの非表示フィールドとしてフィールドが出力されます。

于 2009-01-22T19:08:51.793 に答える