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

R.P*_*rog 3 c# reactjs asp.net-core-mvc .net-core asp.net-core

我尝试向 .net Core 2.1 应用程序添加身份验证。从头开始:我们可以使用 VS 模板通过 React 创建新的 Web 应用程序。

在这个模板中我们可以看到:

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


    if (env.IsDevelopment())
    {
        spa.UseReactDevelopmentServer(npmScript: "start");
    }
});
Run Code Online (Sandbox Code Playgroud)

我还添加了身份验证控制器和带有登录/注册端点的视图。

如何添加拒绝访问 SPA 直到我们登录应用程序的逻辑?

我知道如何使用 asp.net 身份监管,但对于这个 SPA,我需要建议。

Nan*_* Yu 6

在中间件中,您可以检查用户是否经过身份验证,例如:

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");
    }
});
Run Code Online (Sandbox Code Playgroud)