在ASP.NET Core 3.1中,MvcOptions类中的Conditional AccessDeniedPath
属性有一些问题。该属性指定访问被禁止的资源时要重定向的路径。然而,如果访问被禁止的资源时使用了条件访问,则该属性将会失效。
为了解决这个问题,可以在Startup类中添加以下代码,手动设置重定向路径:
services.AddMvc(options =>
{
options.Filters.Add(new AuthorizeFilter(policy));
options.Filters.Add(new CustomAuthorizationFilter());
});
services.Configure(options =>
{
options.DefaultPolicy = policy;
});
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapRazorPages();
endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
});
在上面的代码中,我们使用了MvcOptions。通过该类,我们添加了两个过滤器:AuthorizeFilter和CustomAuthorizationFilter,并配置了DefaultPolicy。这样,我们就可以手动设置重定向路径,并避免使用条件访问时出现问题。
注意,在使用以上代码时,需要根据需求进行一些修改。特别是,设置DefaultPolicy时需要使用一个策略来表示授权信息。另外,CustomAuthorizationFilter需要根据具体的需求进行实现。