イントラネット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を使用するようにします。
どちらもちょっとした作業のようですか?誰かもっと良いアイデアがありますか?