Skip to content

MapRazorComponents unexpectedly requires antiforgery middleware #51981

Open
@SteveSandersonMS

Description

Discovered by @davidfowl. If you're trying to make a minimal Blazor Static SSR project from scratch (not from the template), you may be surprised to find that you must call app.UseAntiforgery even if you're only receiving GET requests and don't have any forms in your whole app. If not, trying to visit any @page component will result in the error:

image

It's a pretty weird inconsistency that you get this for MapRazorComponents endpoints, but do not get this for minimal actions that return RazorComponentResult.

Possible solutions

  • We could change EndpointMiddleware so that if it's a GET request, it doesn't try to enforce antiforgery checks. TBH I'm not sure why that's not already the case - do we even support supplying an antiforgery token with a GET request?
  • Or, we could change RazorComponentEndpointFactory so that it registers a separate endpoint for GET vs non-GET and the GET endpoint doesn't have the RequireAntiforgeryTokenAttribute metadata.
  • Or, we could change MapRazorComponents so that it somehow auto-registers the antiforgery middleware (though this is the least good solution, as it continues to couple different parts of the system and doesn't fix the inconsistency)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions