我有一個最近遷移到 .Net 6.0 的 ASP.Net(Blazor 服務器端)5 Web 應用程式。它有幾個私有端點,我們需要添加一個新的公共端點。如果我們瀏覽到新的公共端點,系統會將我們重定向到 Azure AD B2C 登錄螢屏。我的理解是[AllowAnonymous]在端點方法上添加屬性應該覆寫啟動配置。
我錯過了什么?
啟動.cs:
public virtual void ConfigureServices(IServiceCollection services)
{
services.AddHttpContextAccessor();
services.AddHttpClient();
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(configuration.GetSection("AzureAdB2C"));
services.AddAuthorization();
services.AddControllersWithViews();
//Required as MVC must know whether it can rely on the authorization and CORS Middleware during initialization.
services.AddMvc(options => options.EnableEndpointRouting = false)
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
#endregion
services.AddScoped<GlobalsService>();
services.Configure<AzureADB2C>(configuration.GetSection("AzureADB2C"));
}
public virtual void Configure(IApplicationBuilder app, IWebHostEnvironment env,
DataProtectionKeysContext dataProtectionKeysContext)
{
if (env.IsDevelopment())
{
..........................
}
else
{
app.Use((ctx, next) =>
{
return next();
});
}
app.UseHttpsRedirection();
app.UseCookiePolicy();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseMvcWithDefaultRoute();//Required as MVC must know whether it can rely on the authorization and CORS Middleware during initialization.
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
}
}
通過 http://localhost:44300/api/GeneratePDF/get 訪問的公共 api 端點:
[ApiController]
[Route("api/[controller]")]
[Authorize]
public partial class GeneratePdfController : ControllerBase
{
public GeneratePdfController()
{
}
[HttpGet(Name = "Get")]
[AllowAnonymous]
public async Task<IActionResult> Get()
{
return Ok();
}
}
uj5u.com熱心網友回復:
你有一個錯誤的路由屬性,試試這個
[AllowAnonymous]
[HttpGet("~/api/GeneratePDF/get")]
public async Task<IActionResult> Get()
或更改您的控制器路由
[Route("~/api/[controller]/[action]")]
public partial class GeneratePdfController : ControllerBase
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/368163.html
標籤:asp.net核心 验证 asp.net-web-api 授权 asp.net-授权
上一篇:影像到十六進制三元組(任何語言)
