.NET Web应用在Chromium内核浏览器无法登录问题求助
.NET Web应用Chromium内核浏览器登录无响应问题
我有一个采用默认登录方法的.NET Web应用,登录接口代码如下:
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginModel model, string returnUrl) { ActionResult result; IRestResponse<Dictionary<string, string>> v = null; if (!ModelState.IsValid) { LoggerService?.Log(new user_log("Logged in attempt failed from " + this.GetIPAddress(), "Unknown")); ViewBag.ReturnUrl = returnUrl; result = View(model); // otherwise return success } if(await SignInManager.PasswordSignInAsync(model.Username, model.Password, true, false) == SignInStatus.Success) { LoggerService?.Log(new user_log("Logged in", model.Username)); result = RedirectToLocal(returnUrl); } else { ModelState.AddModelError("LoginReject", "Login Failed"); ViewBag.ReturnUrl = returnUrl; result = View(model); } return result; }
近期遇到一个奇怪的问题:在Chrome或Edge(Chromium内核)浏览器登录时,页面仅刷新,没有请求发送到应用,浏览器控制台也无任何日志。后台日志显示SignInManager.PasswordSignInAsync()返回了SignInStatus.Success,但Chromium内核浏览器没有正常跳转响应。Firefox和IE浏览器则可以正常完成登录流程,重装Chrome也无法解决该问题。有没有人遇到过类似问题?
排查方向及解决方案:
- 检查Anti-Forgery Token配置:Chromium对Cookie的SameSite、Secure属性要求更严格,若Anti-Forgery Token的Cookie未正确配置,可能导致请求被静默拦截。可在
Startup.cs中调整配置:services.AddAntiforgery(options => { options.Cookie.SameSite = SameSiteMode.Lax; options.Cookie.SecurePolicy = CookieSecurePolicy.Always; // 仅HTTPS环境下启用 }); - 验证
RedirectToLocal逻辑:该方法若对returnUrl的合法性校验过于严格,可能导致Chromium拒绝跳转。检查方法实现,确保允许合法的相对路径跳转,避免拦截内部跳转请求。 - 清理目标域名的Cookie和缓存:重装浏览器可能未清除应用域名的残留Cookie,手动清除当前应用域名的所有Cookie和缓存后重试。
- 排查浏览器扩展影响:广告拦截、隐私类插件可能拦截POST请求或Cookie写入,尝试在无痕模式下登录,若恢复正常则逐个禁用扩展排查。
- 检查HTTPS与混合内容:若应用使用HTTPS,确保证书有效且无HTTP混合资源加载,Chromium对混合内容的拦截规则更严格,可能导致请求失败。
内容的提问来源于stack exchange,提问作者Koops128
相关产品推荐
相关产品推荐

