.NET 8 ASP.NET Core MVC微软登录如何启用账号选择功能?
解决ASP.NET Core MVC (.NET 8)微软登录自动使用旧账号的问题
你遇到的问题是微软登录时自动复用之前登录的账号,要启用账号选择界面,只需要在微软登录的配置中添加强制账号选择的参数即可实现。
修改你的配置代码,在AddMicrosoftAccount的配置里增加OnRedirectToAuthorizationEndpoint事件处理,给微软授权地址追加prompt=select_account参数:
builder.Services.AddAuthentication(options => { options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = MicrosoftAccountDefaults.AuthenticationScheme; }).AddCookie().AddMicrosoftAccount(MicrosoftAccountDefaults.AuthenticationScheme, options => { options.ClientId = builder.Configuration.GetSection("MicrosoftKeys:ClientId").Value; options.ClientSecret = builder.Configuration.GetSection("MicrosoftKeys:ClientSecret").Value; // 添加这段代码,强制显示账号选择界面 options.Events.OnRedirectToAuthorizationEndpoint = context => { // 给授权URL追加prompt=select_account参数 var modifiedUrl = context.RedirectUri + "&prompt=select_account"; context.Response.Redirect(modifiedUrl); return Task.CompletedTask; }; });
原理说明:
prompt=select_account是微软身份认证服务支持的参数,当这个参数存在时,会强制用户选择登录账号,不会自动复用之前的会话。- 通过
OnRedirectToAuthorizationEndpoint事件,我们可以拦截默认的授权跳转URL,手动追加这个参数,从而实现账号选择的效果。
修改后,用户点击登录按钮时,就会弹出你想要的账号选择界面,需要切换账号时可以直接选择其他账号,或者点击"使用其他账号"输入新账号。
内容的提问来源于stack exchange,提问作者Midlaj
相关产品推荐
相关产品推荐

