为什么asp.net身份需要存储外部登录详细信息?

问题描述 投票:0回答:1

当我们使用外部身份验证(例如 Google)处理 ASP.NET 身份时,并使用

IdentityDbContext
,下表是由 ASP.NET 身份创建的:

CREATE TABLE [dbo].[AspNetUserLogins] (
    [LoginProvider]       NVARCHAR (128) NOT NULL,
    [ProviderKey]         NVARCHAR (128) NOT NULL,
    [ProviderDisplayName] NVARCHAR (MAX) NULL,
    [UserId]              NVARCHAR (450) NOT NULL
);

因此,如果用户在应用程序中使用 google 登录,asp.net 身份将提示用户进入注册页面并要求用户注册本地帐户。之后上表中就会有一个条目,记录的

LoginProvider
是“Google”,
ProviderKey
是google端的用户id,
UserId
是应用程序的id身份

但是为什么我们需要将这些信息存储在

AspNetUserLogins
表中呢?我们不能只让用户使用外部服务登录,如果用户想注册应用程序的本地帐户,则预先填写一些字段并让用户注册。如果用户不想注册,那也完全没问题。为什么用户必须注册本地帐户?如果用户必须注册本地帐户,那么为什么不摆脱
AspNetUserLogins
表呢?

c# asp.net asp.net-core asp.net-identity
1个回答
0
投票

如果应用程序没有为该用户创建身份,那么他们在当前会话期间所做的事情如何在未来的会话中链接到该用户?用户在应用程序中仍然需要身份。他们只是使用外部提供商的身份进行登录,而不是创建本地密码。这个想法是,他们可以使用同一个密码在很多地方登录,但每个地方仍然必须知道它们的存在。

© www.soinside.com 2019 - 2024. All rights reserved.