ユーザーがログインした後にアクセスするために、セキュリティフィルターによって拒否されたURLを保存する方法

StackOverflow https://stackoverflow.com/questions/470382

  •  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フィールドがログインフォームの非表示フィールド。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top