繁体   English   中英

ASP.NET 核心如何仅对特定路由使用身份验证?

[英]ASP.NET core how to use Authentication only for specific routes?

我配置为对我的 asp.net 反应应用程序使用 windows 身份验证。

在 ConfigureServices() 方法上:

services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
services.AddAuthorization(options =>
{
    options.FallbackPolicy = options.DefaultPolicy;
});

然后在 configure() 方法上:

app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});

但是,通过这样做,所有请求都将触发身份验证过程。 我实际上只希望我的 api 路由(在/api/my/resource中)使用 windows 身份验证是安全的,并且想让整个反应资源文件夹公开(在/any/path/here中)。

如何配置为仅对以/api开头的路由使用 windows 身份验证。

我可以通过这样做来实现:

services.AddAuthorization(options =>
{
    // don't use default policy
    // options.FallbackPolicy = options.DefaultPolicy;
});

然后在需要认证的controller中添加【Authorize】。

[Authorize]     // trigger authentication process
[Route("api/[controller]")]
[ApiController]
public class MyController : ControllerBase {}

然后我可以让特定的路由使用身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM