![](/img/trans.png)
[英]Why can it be that my ApiKey variable is in null when I try to create a new user using ASP.NET Core Identity?
[英]Why is identity null when using .net core 2 AuthorizationHandler in iframe
我有以下向DI注冊的AuthorizationRequirement
和AuthorizationHandler
,並且工作正常。 但是,在iframe(相同來源)中調用帶有[Authorize(Policy = "ConfirmedEmail")]
操作時, context.User.Identity.Name
始終為NULL,因此user
。 有誰知道這是為什么,更重要的是如何解決?
當直接調用完全相同的操作(在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();
}
}
}
更新 :我注意到,盡管iframe和非iframe請求都具有相同的會話cookie,但非iframe請求包含Core.Identity.Application
cookie,但iframe請求卻沒有。 我不知道此問題的重要性或原因。
我終於設法使用以下方法在iframe中使用身份:
services.ConfigureApplicationCookie(options => {
options.Cookie.Name = "MyAuthCookie";
options.Cookie.SameSite = SameSiteMode.None; //<THIS!!!
});
希望這可以節省某人每天撓頭的時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.