In my previously posted CakePHP component/helper pair (and more) that displays links in views depending upon ACL permissions, I've added a fake caching system for storing permissions. I call it "fake" caching because I'm not using Cake's cache system at all. Rather, I'm "caching" the user's ACL-permitted actions in his session. Whenever the session is regenerated, the fake cache will be, also. It will also allow forcing of a refresh of the list. First up, here's the code that I drop into app_controller.php:
2010-10-14: Updated array structure in controller.
There are several articles elsewhere covering this, as well as some (claimed) working solutions. I'm not claiming this is necessarily usable for your project, but it works here under light testing for an app with light user requirements.
Problem: How do I provide only access-permitted links to users in various views? Mark Story released a component a couple of years ago that is supposed to handle it, but either I didn't know what I was doing with it (quite possible) or it just doesn't work under the 1.3 system. I didn't spend much time on it. A search on associated topics revealed Neil Crookes talking about getting and caching all ACOs. That could be useful for checking access, but that's some scary code. The lecterror blog has a greatly simplified version of ACO caching, but after staring at and playing with that code, I found that it won't quite work with my ACO/ARO structure, so it doesn't suit my needs either. Result? Build your own!