Browse Source

Do not limit the error controller to a specific HTTP method

pull/2173/head
Kévin Chalet 2 years ago
parent
commit
aa6733b2df
  1. 19
      sandbox/OpenIddict.Sandbox.AspNetCore.Client/Controllers/ErrorController.cs
  2. 19
      sandbox/OpenIddict.Sandbox.AspNetCore.Server/Controllers/ErrorController.cs
  3. 2
      shared/OpenIddict.Extensions/OpenIddictHelpers.cs
  4. 4
      src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs

19
sandbox/OpenIddict.Sandbox.AspNetCore.Client/Controllers/ErrorController.cs

@ -12,21 +12,20 @@ namespace OpenIddict.Sandbox.AspNetCore.Client;
public class ErrorController : Controller public class ErrorController : Controller
{ {
[HttpGet, HttpPost, Route("~/error")] [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true), Route("~/error")]
public IActionResult Error() public IActionResult Error()
{ {
// If the error was not caused by an invalid // If the error originated from the OpenIddict client, render the error details.
// OIDC request, display a generic error page.
var response = HttpContext.GetOpenIddictClientResponse(); var response = HttpContext.GetOpenIddictClientResponse();
if (response is null) if (response is not null)
{ {
return View(new ErrorViewModel()); return View(new ErrorViewModel
{
Error = response.Error,
ErrorDescription = response.ErrorDescription
});
} }
return View(new ErrorViewModel return View(new ErrorViewModel());
{
Error = response.Error,
ErrorDescription = response.ErrorDescription
});
} }
} }

19
sandbox/OpenIddict.Sandbox.AspNetCore.Server/Controllers/ErrorController.cs

@ -12,21 +12,20 @@ namespace OpenIddict.Sandbox.AspNetCore.Server;
public class ErrorController : Controller public class ErrorController : Controller
{ {
[HttpGet, HttpPost, Route("~/error")] [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true), Route("~/error")]
public IActionResult Error() public IActionResult Error()
{ {
// If the error was not caused by an invalid // If the error originated from the OpenIddict server, render the error details.
// OIDC request, display a generic error page.
var response = HttpContext.GetOpenIddictServerResponse(); var response = HttpContext.GetOpenIddictServerResponse();
if (response is null) if (response is not null)
{ {
return View(new ErrorViewModel()); return View(new ErrorViewModel
{
Error = response.Error,
ErrorDescription = response.ErrorDescription
});
} }
return View(new ErrorViewModel return View(new ErrorViewModel());
{
Error = response.Error,
ErrorDescription = response.ErrorDescription
});
} }
} }

2
shared/OpenIddict.Extensions/OpenIddictHelpers.cs

@ -1387,7 +1387,7 @@ internal static class OpenIddictHelpers
{ {
foreach (var entry in _expandingAccumulator) foreach (var entry in _expandingAccumulator)
{ {
_accumulator[entry.Key] = new StringValues(entry.Value.ToArray()); _accumulator[entry.Key] = new StringValues([.. entry.Value]);
} }
} }

4
src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs

@ -660,7 +660,7 @@ public static class OpenIddictExtensions
} }
} }
builder.Add(group.Key, destinations.ToArray()); builder.Add(group.Key, [.. destinations]);
} }
} }
@ -697,7 +697,7 @@ public static class OpenIddictExtensions
} }
} }
builder.Add(group.Key, destinations.ToArray()); builder.Add(group.Key, [.. destinations]);
} }
} }

Loading…
Cancel
Save