Nach den Dokumenten hier habe ich versucht, ein richtlinienbasiertes Auth-Schema zu implementieren. http://docs.asp.net/en/latest/security/authorization/policies.html#security-authorization-handler-exampleASP.NET 5 Policy-Based Authorization-Handle, das nicht aufgerufen wird
Ich stieß auf das Problem, dass meine Handle-Methode nicht auf meinem benutzerdefinierten AuthorizationHandler aufgerufen wurde. (Es wirft nicht hier). Es injiziert auch die Abhängigkeit, die sich derzeit im Konstruktor befindet.
Hier ist der AuthorizationHandler Code.
using WebAPIApplication.Services;
using Microsoft.AspNet.Authorization;
namespace WebAPIApplication.Auth
{
public class TokenAuthHandler : AuthorizationHandler<TokenRequirement>, IAuthorizationRequirement
{
private IAuthService _authService;
public TokenAuthHandler(IAuthService authService)
{
_authService = authService;
}
protected override void Handle(AuthorizationContext context, TokenRequirement requirement)
{
throw new Exception("Handle Reached");
}
}
public class TokenRequirement : IAuthorizationRequirement
{
public TokenRequirement()
{
}
}
}
In Start Up I
// Authorization
services.AddSingleton<IAuthorizationHandler, TokenAuthHandler>()
.AddAuthorization(options =>
{
options.AddPolicy("ValidToken",
policy => policy.Requirements.Add(new TokenRequirement()));
});
Die Controller-Methode ist
// GET: api/values
[HttpGet, Authorize(Policy="ValidToken")]
public string Get()
{
return "test";
}
Schlagen diesen Endpunkt haben gibt nichts zurück, und es gibt eine Warnung in der Konsole
warn: Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker[0]
Authorization failed for the request at filter 'Microsoft.AspNet.Mvc.Filters.AuthorizeFilter'.
Ich kann hallo t andere Endpunkte, die das Attribut nicht erfolgreich haben.
SOS, Jack
Gleiches Problem. Hast du das jemals herausgefunden? – rob
Ja und ich antwortete unten, es fällt inline mit Ihrem Kommentar auf adem Kommentar – Hamburglar