1

Java Web アプリケーションのセキュリティにSpring Security 4.1.0を使用しています。@PostAuthorize次のようにメソッドに注釈を使用getします。

インターフェース:

@PreAuthorize("hasAuthority('get')")
@PostAuthorize("hasPermission(returnObject, 'read')")
MyEntity get(Serializable id);

そして、get実装方法は次のとおりです。

@Override
@Transactional
public MyEntity get(Serializable id)
{
   MyEntity record = dao.get(id);
   System.out.println(record.getId() + " : " + record.getName());
   return record;
}

web.xmlのように sessionConfig を設定します。

<session-config>
     <session-timeout> 10 </session-timeout>
</session-config>

ユーザーがアプリケーションにログインし、getメソッドを呼び出します。ユーザーは 3 分後にサーバーにリクエストを送信しません。彼は別のリクエストを calgetメソッドに送信します。応答は です403 Access Denied。この後、ユーザーは別の同じ要求をすぐに送信しますが、応答は200 OKです。この要求を参照してください:
403応答:
ここに画像の説明を入力

そして200応答: ここに画像の説明を入力

Tomcat コンソールは、次のように 2 つのケースでログを記録します。

538 : MyEntity 2

問題は何ですか?

spring securityバグですか

4

0 に答える 0