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
応答:
Tomcat コンソールは、次のように 2 つのケースでログを記録します。
538 : MyEntity 2
問題は何ですか?
spring security
バグですか?