Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关联您的Microsoft帐户。电子邮件条目。一次又一次_C#_Azure Active Directory_Asp.net Membership_Core - Fatal编程技术网

C# 关联您的Microsoft帐户。电子邮件条目。一次又一次

C# 关联您的Microsoft帐户。电子邮件条目。一次又一次,c#,azure-active-directory,asp.net-membership,core,C#,Azure Active Directory,Asp.net Membership,Core,我只是通过使用Azure Active Directory进行身份验证的文档组装了一个.Net核心应用程序 我创建并链接了应用程序id和secret,效果很好,但我正在尝试理解其行为 当我第一次登录时,它会要求我将电子邮件与帐户关联。为什么会这样? 根据数据库,我的理解是,您可以在内部用户成员数据库中没有真实用户存在的情况下登录。可以说是软身份验证 当您将用户与电子邮件关联时,它将创建一个成员记录,您可以将其与角色关联 为什么会出现分歧…我不想用相同的用户名自动创建它们作为用户吗 在我创建了

我只是通过使用Azure Active Directory进行身份验证的文档组装了一个.Net核心应用程序

我创建并链接了应用程序id和secret,效果很好,但我正在尝试理解其行为

当我第一次登录时,它会要求我将电子邮件与帐户关联。为什么会这样? 根据数据库,我的理解是,您可以在内部用户成员数据库中没有真实用户存在的情况下登录。可以说是软身份验证

当您将用户与电子邮件关联时,它将创建一个成员记录,您可以将其与角色关联

  • 为什么会出现分歧…我不想用相同的用户名自动创建它们作为用户吗

  • 在我创建了用户并第二次登录后,为什么应用程序“开箱即用”,要求他们第二次关联电子邮件地址?这将作为重复条目出错。在显示该文本之前,视图不应该首先检查用户是否存在吗

  • 我知道我可以在代码中进行更改以使这种行为更正常地工作,但我怀疑我遗漏了一些关键的东西

    最重要的是,我可以尝试破解它,自动登录并绕过此电子邮件步骤,但有没有办法通过设置来做到这一点


    谢谢

    将电子邮件与帐户关联应该是预期行为

    现在,您已选择使用个人用户帐户登录.Net Core应用程序,尽管您使用Microsoft帐户登录,但该应用程序中当前没有个人用户帐户

    你仍然需要被重定向回网站,在那里你可以设置你的电子邮件,它被识别为个人用户帐户。见参考资料

  • 为什么会出现分歧…我不想用相同的用户名自动创建它们作为用户吗
  • 也许你的想法是合理的,但是会有用户使用不同于微软账户的电子邮件。而且,如果没有Exchange Online许可证的O365订阅,并非所有AAD工作帐户都有邮箱。在这种情况下,他们必须使用另一封不同的电子邮件

  • 在我创建了用户并再次登录后,为什么应用程序“开箱即用”,要求他们将电子邮件地址与 第二次?这将作为重复条目出错。 视图不应该在显示之前先检查用户是否存在吗 那篇文章
  • 这是因为您没有确认您的帐户。当您首次创建用户时(使用Microsoft帐户登录后单击注册),您将被重定向到to
    /Identity/account/RegisterConfirmation
    页面,该页面包含模拟电子邮件确认的链接:

  • 选择
    单击此处确认您的帐户链接
  • 选择登录链接并使用相同的凭据登录
  • 这样您就不再需要注册了


    您正在学习的教程设置了
    options.SignIn.RequireConfirmedAccount=true
    ,请尝试如下设置
    false
    以跳过确认

    public void配置服务(IServiceCollection服务)
    {
    services.AddDbContext(选项=>
    options.UseSqlServer(
    GetConnectionString(“DefaultConnection”);
    services.AddDefaultIdentity(options=>options.SignIn.RequireConfirmedAccount=false)
    .AddEntityFrameworkStores();
    services.AddRazorPages();
    services.AddAuthentication().AddMicrosoftAccount(microsoftOptions=>
    {
    microsoftOptions.ClientId=配置[“身份验证:Microsoft:ClientId”];
    microsoftOptions.ClientSecret=配置[“身份验证:Microsoft:ClientSecret”];
    });
    }
    
    谢谢!很抱歉,我不能检查多个答案!那很好。您是否尝试了此选项以在您的终端进行验证?感谢您提供的清晰详细的解释!