We have a requirement to show different content (few links in header section) on a page for logged in and non-logged in users. URL of the page will remain same for both users.
How to design such pages in AEM. How the caching and validation of users would work on each page requests?
Depending on the exact use case, there are different approaches to this kind of requirement.
1. You have two groups of users (logged-in vs. anonymous)
2. You have personalized content (menu looks different for every user depending on his permissions).
There are general integration strategies for this requirement.
Let me first outline the differences in cache-ability for 1 and 2:
For 1, the menu is totally cache-able.
For example, you could add a selector to the URL for user with and without permissions (menu.anonymous.html vs. menu.logged-in.html). With this approach, the application will make the decision which menu to integrate for a certain user. You would want to ensure that this mechanism is somewhat secured and can't be tampered with from the public. Please note: this can also be scaled to a certain amount of different groups (= variations of the menu) but I would keep the number as low as possible (probably a low 2-digit number as maximum).
For 2, you won't be able to cache it. You would need to cache a dedicated page for each user and that most probably will outweigh any gains achieved by caching in the first place.
Coming to the integration strategies:
Two more things to consider:
Hope that helps!