title: How can I get a @PostAuthorize failure to cause a rollback with @Transactional?
body: <p>I have some complicated access restrictions in my application which basically require looking at a combination of the user's roles, as well as some deep properties of the domain objects, to make access decisions.</p>
  
  <p>For some of my methods (specifically things like <code>getItem(Integer id)</code> and <code>updateItem(Integer id, FormBean form)</code>), I can't really know ahead of time if they're allowed to access that item, as I don't have it yet, so I had been using @PostAuthorize.</p>
  
  <p>However, that latter example, <code>updateItem(id, form)</code> presents a challenge. I only want to allow them to update the form in certain specific cases. Right now, I do see the <code>@PostAuthorize</code> causing them to get an HTTP 403 response when they do something they shouldn't, but the database changes aren't rolled back.</p>
  
  <p>Is it possible to get <code>@PreAuthorize</code>, <code>@Transactional</code> and <code>@PostAuthorize</code> to all play nicely together in this case? (I think maybe by adjusting the order of some advice on them... but I'm not totally clear on how that ordering should be done).</p>
  
  <p>Or, has my system gotten complex enough that I should really bite the bullet on Domain ACLs? Unfortunately, the documentation on those feels rather thin...</p>