fix #3827 - Cancel button should redirect to RedirectUrl (using PageState.ReturnUrl)

This commit is contained in:
sbwalker 2024-02-21 10:19:55 -05:00
parent 7b38683985
commit eac7fccbb4
3 changed files with 10 additions and 17 deletions

View File

@ -89,8 +89,6 @@
private bool _alwaysremember = false; private bool _alwaysremember = false;
private string _code = string.Empty; private string _code = string.Empty;
private string _returnUrl = string.Empty;
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Anonymous; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Anonymous;
public override List<Resource> Resources => new List<Resource>() public override List<Resource> Resources => new List<Resource>()
@ -108,11 +106,6 @@
_togglepassword = SharedLocalizer["ShowPassword"]; _togglepassword = SharedLocalizer["ShowPassword"];
if (PageState.QueryString.ContainsKey("returnurl"))
{
_returnUrl = PageState.QueryString["returnurl"];
}
if (PageState.QueryString.ContainsKey("name")) if (PageState.QueryString.ContainsKey("name"))
{ {
_username = PageState.QueryString["name"]; _username = PageState.QueryString["name"];
@ -213,12 +206,12 @@
// hybrid apps utilize an interactive login // hybrid apps utilize an interactive login
var authstateprovider = (IdentityAuthenticationStateProvider)ServiceProvider.GetService(typeof(IdentityAuthenticationStateProvider)); var authstateprovider = (IdentityAuthenticationStateProvider)ServiceProvider.GetService(typeof(IdentityAuthenticationStateProvider));
authstateprovider.NotifyAuthenticationChanged(); authstateprovider.NotifyAuthenticationChanged();
NavigationManager.NavigateTo(NavigateUrl(WebUtility.UrlDecode(_returnUrl), true)); NavigationManager.NavigateTo(NavigateUrl(PageState.ReturnUrl, true));
} }
else else
{ {
// post back to the Login page so that the cookies are set correctly // post back to the Login page so that the cookies are set correctly
var fields = new { __RequestVerificationToken = SiteState.AntiForgeryToken, username = _username, password = _password, remember = _remember, returnurl = _returnUrl }; var fields = new { __RequestVerificationToken = SiteState.AntiForgeryToken, username = _username, password = _password, remember = _remember, returnurl = WebUtility.UrlEncode(PageState.ReturnUrl) };
string url = Utilities.TenantUrl(PageState.Alias, "/pages/login/"); string url = Utilities.TenantUrl(PageState.Alias, "/pages/login/");
await interop.SubmitForm(url, fields); await interop.SubmitForm(url, fields);
} }
@ -260,7 +253,7 @@
private void Cancel() private void Cancel()
{ {
NavigationManager.NavigateTo(WebUtility.UrlDecode(_returnUrl)); NavigationManager.NavigateTo(PageState.ReturnUrl);
} }
private async Task Forgot() private async Task Forgot()
@ -328,7 +321,7 @@
private void ExternalLogin() private void ExternalLogin()
{ {
NavigationManager.NavigateTo(Utilities.TenantUrl(PageState.Alias, "/pages/external?returnurl=" + _returnUrl), true); NavigationManager.NavigateTo(Utilities.TenantUrl(PageState.Alias, "/pages/external?returnurl=" + WebUtility.UrlEncode(PageState.ReturnUrl)), true);
} }
} }

View File

@ -128,9 +128,9 @@ else
if (user != null) if (user != null)
{ {
await logger.LogInformation("User Created {Username} {Email}", _username, _email); await logger.LogInformation("User Created {Username} {Email}", _username, _email);
if (PageState.QueryString.ContainsKey("returnurl")) if (!string.IsNullOrEmpty(PageState.ReturnUrl))
{ {
NavigationManager.NavigateTo(WebUtility.UrlDecode(PageState.QueryString["returnurl"])); NavigationManager.NavigateTo(PageState.ReturnUrl);
} }
else // legacy behavior else // legacy behavior
{ {
@ -167,7 +167,7 @@ else
private void Cancel() private void Cancel()
{ {
NavigationManager.NavigateTo(NavigateUrl(string.Empty)); NavigationManager.NavigateTo(PageState.ReturnUrl);
} }
private void TogglePassword() private void TogglePassword()

View File

@ -483,9 +483,9 @@
await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId); await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId);
await logger.LogInformation("User Profile Saved"); await logger.LogInformation("User Profile Saved");
if (PageState.QueryString.ContainsKey("returnurl")) if (!string.IsNullOrEmpty(PageState.ReturnUrl))
{ {
NavigationManager.NavigateTo(WebUtility.UrlDecode(PageState.QueryString["returnurl"])); NavigationManager.NavigateTo(PageState.ReturnUrl);
} }
else // legacy behavior else // legacy behavior
{ {
@ -551,7 +551,7 @@
private void Cancel() private void Cancel()
{ {
NavigationManager.NavigateTo(NavigateUrl(string.Empty)); NavigationManager.NavigateTo(PageState.ReturnUrl);
} }
private void ProfileChanged(ChangeEventArgs e, string SettingName) private void ProfileChanged(ChangeEventArgs e, string SettingName)