using Microsoft.AspNetCore.Authentication; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System.Net; using System.Text.Encodings.Web; using System.Threading.Tasks; namespace Sarand.BusinessMgr.Net.Core.Web.Middleware { //======================================================================= // Authentication handler required to allow actions to issue Forbid() responses. // Ref. https://stackoverflow.com/questions/54578426/why-do-i-need-to-set-a-defaultforbidscheme/54587054#54587054 //======================================================================= public class SbmAuthenticationHandler : AuthenticationHandler { //------------------------------------------------------------------- // Data members. //------------------------------------------------------------------- public SbmAuthenticationHandler(IOptionsMonitor options, ILoggerFactory logger, UrlEncoder encoder) : base(options, logger, encoder) { } //------------------------------------------------------------------- protected override Task HandleForbiddenAsync(AuthenticationProperties properties) { Context.Response.StatusCode = (int)HttpStatusCode.Forbidden; return base.HandleForbiddenAsync(properties); } //------------------------------------------------------------------- protected override async Task HandleAuthenticateAsync() { Context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; await Task.CompletedTask; return AuthenticateResult.NoResult(); } //------------------------------------------------------------------- } //======================================================================= }