在ASP.Net Core中,可以通过添加Authorization策略来保护应用程序的端点。如果未经身份验证的用户尝试访问安全的端点,他们将被重定向到登录页面。但是,如果您希望允许匿名用户访问某些端点,但他们仍被重定向到登录页面,那么这就成了一个问题。 要解决这个问题,您需要在Startup.cs文件中去配置您的策略。您可以使用AllowAnonymous扩展方法,来允许匿名用户访问某些端点,并在需要的地方使用Authorize扩展方法对需要授权的端点进行保护。下面是一个示例代码:
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// 允许匿名用户访问"/home"端点
services.AddMvc().AddRazorPagesOptions(options =>
{
options.Conventions.AllowAnonymousToPage("/home");
});
// 添加策略
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAuthorizedUser", policy => policy.RequireAuthenticatedUser());
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
// 对"/secure"端点进行授权保护
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "secureRoute",
template: "secure",
defaults: new { controller = "Home", action = "Secure" })
.RequireAuthorization("RequireAuthorizedUser");
});
}
// HomeController.cs
[AllowAnonymous]
public IActionResult Home()
{
return View();
}
[Authorize(Policy = "RequireAuthorizedUser")]
public IActionResult Secure()
{
return View();
}
上面的代码将允许未经身份验证的用户访问"/home"端点,但需要授权