J'ai le AuthorizationRequirement
et AuthorizationHandler
qui est enregistré avec DI et fonctionne très bien. Cependant, lorsqu'une action avec [Authorize(Policy = "ConfirmedEmail")]
est appelée dans un iframe (même origine), context.User.Identity.Name
est toujours NULL et donc user
. Est-ce que quelqu'un a une idée de pourquoi c'est, et plus important encore, comment le réparer?Pourquoi l'identité est-elle nulle lors de l'utilisation .net core 2 AuthorizationHandler dans iframe
Lorsque la même action est appelée directement (en dehors d'un iframe), context.User.Identity.Name
est correct et la recherche de l'utilisateur réussit.
public class ConfirmedEmailRequirement : IAuthorizationRequirement { }
public class ConfirmedEmailHandler : AuthorizationHandler<ConfirmedEmailRequirement>
{
private readonly UserManager<User> _userManager;
public ConfirmedEmailHandler(UserManager<User> userManager)
{
_userManager = userManager;
}
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, ConfirmedEmailRequirement requirement)
{
var user = await _userManager.GetUserAsync(context.User);
if (user?.EmailConfirmed == true)
{
context.Succeed(requirement);
}
else
{
context.Fail();
}
}
}
MISE À JOUR: J'ai remarqué que même si les deux iframe et demande non iframe ont le même cookie de session, la demande non iframe comprend un cookie Core.Identity.Application
, la demande iframe ne fonctionne pas. Je ne connais pas la signification de ceci ou de ce qui le cause.