繁体   English   中英

关联您的 Microsoft 帐户。 Email 条目。 一次又一次

[英]Associate your Microsoft account. Email entry. Again and Again

我只是通过使用 Azure Active Directory 进行身份验证的文档将 a.Net Core 应用程序放在一起。

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-5.0

我创建并链接了应用程序 ID 和密码,效果很好,但我试图了解这种行为。

当我第一次登录时,它要求我将 email 与该帐户相关联。 为什么是这样? 我的理解是,基于数据库,您可以在内部用户成员数据库上没有真实用户的情况下登录。 可以这么说,是一种软身份验证。

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

  1. 为什么分叉......之后我不是希望使用相同的用户名自动将它们创建为用户吗?

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

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

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

谢谢!

您正在遵循的教程设置options.SignIn.RequireConfirmedAccount = true ,尝试如下设置false以跳过确认。

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false)
        .AddEntityFrameworkStores<ApplicationDbContext>();
    services.AddRazorPages();

    services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
    {
        microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"];
        microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
    });
}

将 email 与帐户关联应该是预期的行为。

现在您已选择使用个人用户帐户登录您的 .Net Core 应用程序,虽然您使用 Microsoft 帐户登录,但该应用程序中目前没有个人用户帐户。

您仍然需要被重定向回 web 站点,您可以在其中设置您的 email,该站点被识别为个人用户帐户。 请参阅此处的参考。

  1. 为什么分叉......之后我不是希望使用相同的用户名自动将它们创建为用户吗?

也许你的想法是合理的,但是会有用户使用不同于微软帐户的电子邮件。 如果 AAD 工作帐户没有使用 Exchange Online 许可证的 O365 订阅,则并非所有 AAD 工作帐户都有邮箱。 在这种情况下,他们必须使用另一个不同的 email。

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

这是因为您没有确认您的帐户 当您首次创建用户时(使用 Microsoft 帐户登录后单击注册),您将被重定向到/Identity/Account/RegisterConfirmation页面,其中包含模拟 email 确认的链接:

  1. Select Click here to confirm your account link
  2. Select登录链接并使用相同的凭据登录。

那么您将不再需要注册

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM