簡體   English   中英

為什么在iframe中使用.net core 2 AuthorizationHandler時身份為null

[英]Why is identity null when using .net core 2 AuthorizationHandler in iframe

我有以下向DI注冊的AuthorizationRequirementAuthorizationHandler ,並且工作正常。 但是,在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM