我尝试向.net Core2.1应用程序添加身份验证。从头开始:我们可以使用VS模板通过react创建新的web应用程序。
在这个tempate中,我们可以看到:
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
spa.ApplicationBuilder.UseAuthentication();
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
我还添加了带有登录/注册端点的身份验证控制器和视图。
在登录到应用程序之前,我如何添加拒绝访问SPA的逻辑?
我知道如何使用asp.net identity regullary,但是对于这个SPA我需要一些建议。
发布于 2019-05-30 15:40:53
在中间件中,您可以检查用户是否通过了身份验证,例如:
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");
}
});
发布于 2019-05-30 14:54:35
对于使用SPA的身份验证,您可以使用一些服务器端技术,如JWT来验证用户身份。因此,如果用户登录成功,您可以给他们令牌,当用户请求您的API时,您可以在请求的头部中提交令牌,以便服务器知道您是谁,并允许您访问API资源。
你可以看看openiddict。他们有完整的Angular应用示例
https://stackoverflow.com/questions/56361859
复制相似问题