我尝试向.net Core 2.1应用程序添加身份验证。 从头开始:我们可以使用VS模板使用react创建新的Web应用程序。
在这种诱惑下,我们可以看到:
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
spa.ApplicationBuilder.UseAuthentication();
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
我还添加了具有登录/注册端点的Auth控制器和视图。
如何添加将拒绝访问SPA的逻辑,直到我们登录到应用程序?
我知道如何使用asp.net身份常规,但通过此SPA我需要建议。
答案 0 :(得分:0)
要使用SPA进行身份验证,您可以使用某些服务器端技术(例如JWT)来对用户进行身份验证。因此,如果用户登录成功,则可以为他们提供令牌,并且当用户请求您的API时,您可以在请求的标头中提交令牌,以便服务器知道您是谁,并允许您访问API资源。
您可以查看openiddict。他们有Angular应用的完整示例
答案 1 :(得分:0)
在中间件中,您可以检查用户是否已通过身份验证,例如:
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");
}
});