C# 使用ReactJS SPA在.net Core中进行身份验证

C# 使用ReactJS SPA在.net Core中进行身份验证,c#,reactjs,asp.net-core,.net-core,asp.net-core-mvc,C#,Reactjs,Asp.net Core,.net Core,Asp.net Core Mvc,我正在尝试向.NETCore2.1应用程序添加身份验证。 从头开始:我们可以使用VS模板创建新的web应用程序 在这个节拍中,我们可以看到: app.UseSpa(spa => { spa.Options.SourcePath = "ClientApp"; spa.ApplicationBuilder.UseAuthentication(); if (env.IsDevelopment()) { spa.UseReactDevelopme

我正在尝试向.NETCore2.1应用程序添加身份验证。 从头开始:我们可以使用VS模板创建新的web应用程序

在这个节拍中,我们可以看到:

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";
    spa.ApplicationBuilder.UseAuthentication();


    if (env.IsDevelopment())
    {
        spa.UseReactDevelopmentServer(npmScript: "start");
    }
});
我还添加了带有登录/注册端点的Auth控制器和视图

在我们登录应用程序之前,如何添加拒绝访问SPA的逻辑


我知道如何定期使用asp.net身份验证,但对于此SPA,我需要建议。

对于SPA身份验证,您可以使用一些服务器端技术,如JWT来验证用户身份。因此,如果用户登录成功,您可以向他们提供令牌,当用户请求API时,您可以在请求头中提交令牌,以便服务器知道您是谁,并允许您访问API资源


你可以看看。他们有Angular app的完整示例,在中间件中,您可以检查用户是否经过身份验证,例如:

app.UseSpa(spa =>
{
    spa.ApplicationBuilder.MapWhen(
        (context)=>!context.User.Identity.IsAuthenticated, 
        ab => {
            ab.Run(async (ctx )=> {
                ctx.Response.StatusCode = 401;
                //redirect to login page
                ctx.Response.Headers.Add("Location", "....");
                //await ctx.Response.WriteAsync("Authecation Failed");
            });
        }
    );

    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
        spa.UseReactDevelopmentServer(npmScript: "start");
    }
});

我可以跳过favicon.ico请求吗?因为当前使用此解决方案时,favicon请求也被重定向。