Open Myster opened 2 years ago
Is there a way to make the login system 'redirect' to a login page instead of 'rewrite' the current URL?
No there's nothing built in for that and changing the behavior now would be a breaking change for people relying on the existing behavior.
As a workaround you could probably do your own redirects from the template by detecting IsProtected
and checking if they're logged in. Not sure.
Of course it's also possible to bypass the built-in public access feature and replace it with your own.
I'll ask if / how we could update the public access feature.
The primary issue is not really the rewrite vs redirect, that was just how I was thinking of working around the issue.
I have been wrestling with this issue all day. Of course I inadvertently created a duplicate before stumbling on this one:
https://github.com/umbraco/Umbraco-CMS/issues/13462
There are more details that may be relevant there, but in short my issue is that my view components are all returning restricted content because the login page and the restricted page share some of the same view components. If I use:
var currentPage = _context.GetRequiredUmbracoContext().PublishedRequest.PublishedContent;
To resolve the current page in the VC I end up not with the login page, but restricted content page. [UmbracoMemberAuthorize] does not work in VC controllers.
The published request needs to get updated when login is triggered as it's not currently cascading down in the context.
The frustrating part is that if I use [UmbracoMemberAuthorize] the default behavior is a redirect, but if I use public access it's more like a rewrite. That behavior should be more consistent. Redirect like the good 'ol days would be a better option IMO and address the context issue at the same time. Maybe implemented as as a configurable option...
Thank you!
Jamie
Umbraco version
9.4.3
Bug summary
Given you are using PublicAccess to restrict access & specify a login page. When you hit a restricted page When not logged in. Then the view returns different IPublishedContent based on which method you use to retrieve it.
Specifics
The page we're viewing (both the denied and login page) has this view:
The output is:
Note: if you use any partials that use publishedContent from the 'context' rather than models builder it will show restricted content when you are not logged in.
Expected result / actual result
I expect both methods to return the IPublishedContent for /login/