Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用cookie保护asp.net核心中间件?_C#_Authentication_Asp.net Core - Fatal编程技术网

C# 如何使用cookie保护asp.net核心中间件?

C# 如何使用cookie保护asp.net核心中间件?,c#,authentication,asp.net-core,C#,Authentication,Asp.net Core,我将开发一个ASP.NET核心web API,在cookie身份验证后重定向收到的HTTP API 在my Startup.cs文件下面: 在我的中间件下面: using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using System; using System.Threading.Tasks; namespace MyProject.Middlewares { public class

我将开发一个ASP.NET核心web API,在cookie身份验证后重定向收到的HTTP API

在my Startup.cs文件下面:

在我的中间件下面:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using System;
using System.Threading.Tasks;

namespace MyProject.Middlewares
{
    public class ReverseProxyMiddleware : IMiddleware
    {
        [Authorize]
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            // HTTP redirection...
        }
    }
}
实际上,如果我尝试在没有cookie的情况下执行HTTP请求,我会得到200个结果。如何保护我的中间件


谢谢

API不使用cookie身份验证。您应该有一个端点进行身份验证,该端点返回一个访问令牌,然后通过
授权
头将其传递给每个进一步的请求。嗨,Chris,我不会直接传递访问令牌,因为客户端是SPA(我不会公开访问令牌)。除非您将其直接写入页面,否则您不会公开它(你不应该这样做)。无论如何,访问令牌将有一个到期日,您也可以实现CSRF,因为它是一个SPA,可以确保所有请求都来自您站点上的页面。嗨,Chris,我不会直接发送访问令牌的另一个原因是我将实现OAuth 2.0授权流。您不应该应用
authorized属性
对于任何中间件,它都适用于操作或控制器。Doc说:“过滤器在MVC操作调用管道内运行,有时称为过滤器管道。过滤器管道在MVC选择要执行的操作后运行。”。最重要的是,不要实现您自己的身份验证,而是使用现有身份验证。以下情况与您的情况非常相似:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using System;
using System.Threading.Tasks;

namespace MyProject.Middlewares
{
    public class ReverseProxyMiddleware : IMiddleware
    {
        [Authorize]
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            // HTTP redirection...
        }
    }
}