diff --git a/YLErpWeb/Controllers/AccountController.cs b/YLErpWeb/Controllers/AccountController.cs index 9f83badb..1b58e68d 100644 --- a/YLErpWeb/Controllers/AccountController.cs +++ b/YLErpWeb/Controllers/AccountController.cs @@ -34,6 +34,10 @@ namespace YLErp.Web.Controllers public ActionResult Login(bool skipSso = false) { + var logger = LogFactory.GetLogger(); + var remoteIp = HttpContext.Connection.RemoteIpAddress?.ToString(); + logger.Info($"[登录页面] 访问登录页,IP: {remoteIp}, skipSso: {skipSso}"); + var keys = Request.Cookies.Keys.ToArray(); foreach (var key in keys) @@ -44,18 +48,27 @@ namespace YLErp.Web.Controllers } } + // 检查天风SSO if (SsoLoginConfig.SSO_Enable && PS.Config.Company == CompanyEnum.天风) { + logger.Info($"[登录页面] 天风SSO已启用,跳转到天风登录页"); return View("TianFengLogin"); } - if (PS.Config.ErpElement.DisablePasswordLogin) + // 检查是否禁用密码登录 + var disablePasswordLogin = PS.Config.ErpElement.DisablePasswordLogin; + var strictAuthorize = PS.Config.ErpElement.StrictAuthorize; + logger.Info($"[登录页面] 配置检查 - DisablePasswordLogin: {disablePasswordLogin}, StrictAuthorize: {strictAuthorize}, Company: {PS.Config.Company}"); + + if (disablePasswordLogin) { var ssoUrl = YLErp.Web.Models.GeneralSSOConfig.AuthUrl; + logger.Info($"[登录页面] 密码登录已禁用,准备跳转到SSO: {ssoUrl}"); if (!string.IsNullOrEmpty(ssoUrl)) { return Redirect(ssoUrl); } + logger.Error($"[登录页面] SSO地址未配置,无法跳转"); return Content("SSO登录未配置,请联系管理员"); } @@ -265,8 +278,12 @@ namespace YLErp.Web.Controllers public ActionResult LogOut() { + var logger = LogFactory.GetLogger(); var userId = User.GetUserId(); var loginName = User.GetUserName(); + var remoteIp = HttpContext.Connection.RemoteIpAddress?.ToString(); + + logger.Info($"[退出登录] 用户请求退出 - UserId: {userId}, LoginName: {loginName}, IP: {remoteIp}"); if (userId > 0) { @@ -283,7 +300,7 @@ namespace YLErp.Web.Controllers } db.SystemUserLoginfo.Add(new SystemUserLoginfo { - IPAddress = HttpContext.Connection.RemoteIpAddress?.ToString(), + IPAddress = remoteIp, LogTime = DateTime.Now, LogType = "登出", UserId = userId, @@ -291,15 +308,17 @@ namespace YLErp.Web.Controllers MACAddress = string.Empty }); db.SaveChanges(); + logger.Info($"[退出登录] 用户退出记录已保存 - UserId: {userId}, LoginName: {loginName}"); } } catch (Exception ex) { - LogFactory.GetLogger("用户登出").Error(ex); + logger.Error($"[退出登录] 保存退出记录失败 - UserId: {userId}", ex); } } HttpContext.SignOutAsync(IdentityConstants.ApplicationScheme); + logger.Info($"[退出登录] SignOutAsync 已调用"); if (SsoLoginConfig.SSO_Enable) { @@ -316,6 +335,17 @@ namespace YLErp.Web.Controllers } } + // 如果禁用了密码登录,显示退出页面(避免循环跳转到SSO) + var disablePasswordLogin = PS.Config.ErpElement.DisablePasswordLogin; + logger.Info($"[退出登录] 跳转判断 - DisablePasswordLogin: {disablePasswordLogin}, SsoLoginConfig.SSO_Enable: {SsoLoginConfig.SSO_Enable}"); + + if (disablePasswordLogin) + { + logger.Info($"[退出登录] 密码登录已禁用,返回LogOut视图"); + return View("LogOut"); + } + + logger.Info($"[退出登录] 跳转到登录页"); return RedirectToAction("Login"); } diff --git a/YLErpWeb/Views/Account/LogOut.cshtml b/YLErpWeb/Views/Account/LogOut.cshtml index 274b11ae..85be5a71 100644 --- a/YLErpWeb/Views/Account/LogOut.cshtml +++ b/YLErpWeb/Views/Account/LogOut.cshtml @@ -3,6 +3,7 @@ @{ Layout = null; ViewBag.Title = "登出"; + var disablePasswordLogin = PS.Config?.ErpElement?.DisablePasswordLogin ?? false; } @@ -10,11 +11,31 @@ @GlobalConfig.ProjectTitle +
-
+
已经登出系统,为安全性考虑,浏览器窗口将在 5秒 后自动关闭! + @if (disablePasswordLogin) + { +

+ + }