C# 使用ReactJS SPA在.net Core中进行身份验证
我正在尝试向.NETCore2.1应用程序添加身份验证。 从头开始:我们可以使用VS模板创建新的web应用程序 在这个节拍中,我们可以看到: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
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请求也被重定向。