ユーザーがログインした後にアクセスするために、セキュリティフィルターによって拒否されたURLを保存する方法
-
19-08-2019 - |
質問
イントラネット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を使用するようにログインロジックを変更します。
それらの両方は少し作業のように見えますか?誰もがより良いアイデアを持っていますか?
解決
ログインを必要とするほとんどのサイトは、メソッドAを使用してそれを行うようです。たとえば、スタックオーバーフローで、ログインが必要なページにアクセスすると、/users/login?returnurl=...
にリダイレクトされ、returnurl
フィールドがログインフォームの非表示フィールド。
所属していません StackOverflow