Skip to content

Add API to specify antiforgery request token source #52281

@MaceWindu

Description

@MaceWindu

Background and Motivation

#51912 (comment)

Proposed API

namespace Microsoft.AspNetCore.Antiforgery;

public class AntiforgeryOptions
{
+        public AntiforgeryRequestTokenSource RequestTokenSource { get; set; }
}

+[Flags]
+public enum AntiforgeryRequestTokenSource
+{
+        Header = 1,
+        FormBody = 2,
+        HeaderOrFormBody = Header | FormBody
+}

public class RequireAntiforgeryTokenAttribute : Attribute, IAntiforgeryMetadata
{
+        public AntiforgeryRequestTokenSource RequestTokenSource { get; init; }
}

Usage Examples

services.AddAntiforgery(static options =>
{
    options.RequestTokenSource = AntiforgeryRequestTokenSource.Header
});

[RequireAntiforgeryToken(RequestTokenSource = AntiforgeryRequestTokenSource.Header)]
public class MyController
{
    [HttpPost]
    public IActionResult Post() { ... }

    [HttpPost]
    [RequireAntiforgeryToken(RequestTokenSource = AntiforgeryRequestTokenSource.FormBody)]
    public IActionResult Post2() { ... }
}

Alternative Designs

Risks

Metadata

Metadata

Assignees

No one assigned

    Labels

    api-approvedAPI was approved in API review, it can be implementedarea-middlewareIncludes: URL rewrite, redirect, response cache/compression, session, and other general middlewaresarea-mvcIncludes: MVC, Actions and Controllers, Localization, CORS, most templatespending-ci-rerunWhen assigned to a PR indicates that the CI checks should be rerun

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions