Hello everyone! I've encountered a minor issue. I've recently introduced a new property called "cookie settings" to all page properties. The intention behind this addition is to empower authors to independently create cookies at the page level, eliminating the need for hardcoding in our codebase. So far, everything is functioning smoothly.
However, a challenge arises when authors configure cookies at the page level using the page properties and subsequently add a redirect from the advanced tab, also at the page level. The redirect tends to occur before the cookies are created at the page level, leading to undesired behavior.
I'm reaching out to seek advice or insights from anyone who has faced a similar scenario. What would be the best approach to ensure that cookies are created first at the page level before allowing the redirect to take effect? Thank you in advance for your assistance!
Solved! Go to Solution.
Views
Replies
Total Likes
Hi @Ayoub_Tabai
You can't set a cookie from sling model if page execution is stop due to redirect.
you need to write a custom filter to read value from jcr node and set a cookie before redirect happens.
Hi @Ayoub_Tabai
Since the redirect is performed server side before serving actual page HTML from AEM. So there is no ways you can achieve this at client side.
What you can do is create a sling filter that that will set a cookie from severs side.
This custom filter must be trigger before the OOTB redirect filter.
Hello! I'm not handling this from the client side. Instead, I have a model and an implementation. I utilize a cqdialog that contains a multifield where users can input the cookie name and its value. Subsequently, I read this multifield in my Sling model, managing it from the server side.
Hi @Ayoub_Tabai
You can't set a cookie from sling model if page execution is stop due to redirect.
you need to write a custom filter to read value from jcr node and set a cookie before redirect happens.
You have to override the com.adobe.cq.wcm.core.components.models.Page on your end. Then you can achieve your goal.
@Model(adaptables = SlingHttpServletRequest.class, adapters = Page.class, resourceType = HbkPageImpl.RESOURCE_TYPE)
public class YourPageImpl extends AbstractComponentImpl implements Page {
//Your code goes here
//Also check the core component page impl
}