0
我有以下AuthorizationRequirement
和AuthorizationHandler
,這是在DI中註冊並且工作得很好。但是,如果在iframe(同一來源)內調用[Authorize(Policy = "ConfirmedEmail")]
的操作,則context.User.Identity.Name
全是NULL,因此user
也是如此。有誰知道這是爲什麼,更重要的是如何解決它?爲什麼當在iframe中使用.net core 2 AuthorizationHandler時身份爲空
當直接調用完全相同的動作(在iframe之外)時,context.User.Identity.Name
是正確的,並且用戶查找成功。
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();
}
}
}
UPDATE: 我注意到,雖然這兩個iframe和非iframe的請求具有相同的會話cookie,非IFRAME請求包括Core.Identity.Application
餅乾,iframe的請求不。我不知道這個或者是什麼導致它的意義。