0
votes

We have created a site that needs to have most of the pages locked down to anonymous users. The only pages they should be able to access are:

  • Login
  • Reset Password
  • Account Validation
  • Page Not Found
  • Privacy Policy
  • T & Cs

The startItem of the website has been set to "/Home" as all of the other pages included those that are allowed anonymous access are below.

This node has had "extranet\Anonymous" read removed and then we allow read access of the specific pages that we want them to have access to.

What we have found is that if we request a Url such as: www.domain.com/page-i-cant-get-to then Sitecore will redirect you to the url set in the loginPage attribute on the site, which is correct.

However if I request www.domain.com I get a an error saying "The layout for the requested document was not found.

If I do login, then go the same Url, everything is fine.

I've stepped through the ExecuteRequest pipeline and have found when requesting www.domain.com/page-i-cant-get-to the Context.Item is null, so it's passed into the HandleItemNotFound(args) method.

If we request the root page, then this is set to be the root sitecore node ID {11111111-1111-1111-1111-111111111111} and so passes over the HandleItemNotFound and into the HandleLayoutNotFound(args)

I tried using the "requireLogin" attribute, but then I can only get access to the loginPage and not any of the other pages I want to allow anonymous access to.

I have also tried changing the startItem to be the login page, but then all the Urls for the pages are in an incorrect structure.

Is anyone able to shed any light on how this should be done?

Thanks in advance

1
Have you found a solution? I'm running into the same issues now. - Dražen Janjiček
We ended up overriding the the Process method on the ExecuteRequest pipeline. At the end of the method it was checking if the Context.Item was null. We changed that to be null or the args.LocalPath == "/" - SimonTheGoat

1 Answers

0
votes

Why don't you try leaving anonymous user with read permission on the home item and then deny the pages(items) you want to block?