ASP.NET Core 8 RC2 Blazor独立账户项目配置外部登录遇问题求助
在.NET 8 Blazor Web应用(独立账户模板)中配置外部登录
问题原因
你遇到的AddGoogle、AddMicrosoftAccount等方法不存在的问题,是因为这些外部登录的扩展方法并不包含在默认的独立账户模板依赖中,需要手动安装对应的NuGet包。
配置步骤
- 安装对应NuGet包
根据你需要的登录提供商,安装以下包(可通过NuGet包管理器或CLI命令):
- Google登录:
Microsoft.AspNetCore.Authentication.Googledotnet add package Microsoft.AspNetCore.Authentication.Google - Microsoft账户登录:
Microsoft.AspNetCore.Authentication.MicrosoftAccountdotnet add package Microsoft.AspNetCore.Authentication.MicrosoftAccount - Facebook登录:
Microsoft.AspNetCore.Authentication.Facebookdotnet add package Microsoft.AspNetCore.Authentication.Facebook
- 在Program.cs中配置外部登录服务
安装完成后,即可在Program.cs中添加外部登录配置,示例如下:
// 独立账户模板默认已包含Identity服务配置,确保保留 builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>(); // 链式添加外部登录提供商配置 builder.Services.AddAuthentication() .AddGoogle(options => { // 从配置文件读取密钥(推荐做法) options.ClientId = builder.Configuration["Authentication:Google:ClientId"]; options.ClientSecret = builder.Configuration["Authentication:Google:ClientSecret"]; }) .AddMicrosoftAccount(options => { options.ClientId = builder.Configuration["Authentication:Microsoft:ClientId"]; options.ClientSecret = builder.Configuration["Authentication:Microsoft:ClientSecret"]; }); // 确保认证、授权中间件顺序正确,放在路由之后、Blazor Hub映射之前 app.UseAuthentication(); app.UseAuthorization();
- 配置应用密钥到appsettings.json
将从各登录提供商获取的ClientId和ClientSecret添加到appsettings.json中:
"Authentication": { "Google": { "ClientId": "你的Google客户端ID", "ClientSecret": "你的Google客户端密钥" }, "Microsoft": { "ClientId": "你的Microsoft客户端ID", "ClientSecret": "你的Microsoft客户端密钥" } }
- 在提供商平台创建应用
需要到对应提供商的开发者平台创建应用,获取ClientId和ClientSecret:
- Google:在Google开发者控制台创建OAuth 2.0客户端ID,设置回调URL为
https://你的域名/signin-google - Microsoft:在Azure门户注册应用,设置重定向URI为
https://你的域名/signin-microsoft
验证
启动应用后,注册/登录页面会自动显示已配置的外部登录按钮,点击即可跳转到对应提供商完成登录,登录成功后会自动关联到本地用户账户。
内容的提问来源于stack exchange,提问作者Simen Arntsen
相关产品推荐
相关产品推荐

