我使用Spring Security 4.1.0来保护我的java Web应用程序的安全性。我对@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分钟后向服务器发送请求。他向cal get
方法发送了另一个请求。响应为403 Access Denied
,此用户立即发送另一个相同的请求,但响应为 200 OK
。请参阅此请求:
403
回复:
Tomcat控制台记录如下2个案例:
538 : MyEntity 2
问题是什么?
是spring security
错误吗?