You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MVC5中用ADO.NET将当前登录用户名插入SQL表

获取当前Windows登录用户并插入SQL表

要自动获取当前Windows登录用户并插入到MSSQL的username列,需根据你的ASP.NET版本选择对应实现,以下是具体方案:

前提条件

确保项目已启用Windows身份验证:

  • ASP.NET Core:在launchSettings.json中设置windowsAuthentication: true、anonymousAuthentication: false,并在Program.cs中添加builder.Services.AddAuthentication(IISDefaults.AuthenticationScheme);
  • ASP.NET Framework:在Web.config中启用Windows身份验证,禁用匿名访问

代码实现

1. 获取当前用户

Windows身份验证下,用户身份信息通过User.Identity.Name获取(格式为域名\用户名,例如DOMAIN\jdoe)。若只需纯用户名部分,可拆分字符串提取。

2. 插入SQL参数

替换你原有的代码片段:

ASP.NET Core(Razor页面/控制器)

// 获取完整登录名,拆分出纯用户名
var fullUserName = User.Identity.Name;
var userName = fullUserName?.Split('\\').Last() ?? string.Empty;

// 推荐指定参数类型,避免AddWithValue的潜在问题
cmd.Parameters.Add(new SqlParameter("@SUserName", SqlDbType.NVarChar, 50) 
{ 
    Value = userName 
});

ASP.NET Framework

var fullUserName = HttpContext.Current.User.Identity.Name;
var userName = fullUserName?.Split('\\').Last() ?? string.Empty;

cmd.Parameters.Add(new SqlParameter("@SUserName", SqlDbType.NVarChar, 50) 
{ 
    Value = userName 
});

注意事项

  • 若User.Identity.Name为空,检查Windows身份验证是否正确启用,以及应用池是否配置为允许Windows身份验证
  • 避免直接使用AddWithValue,它可能导致SQL Server参数类型推断错误,引发性能问题或异常
  • 处理null情况,避免空引用异常,确保即使获取不到用户信息也能正常执行插入(可默认空字符串或其他占位符)

内容的提问来源于stack exchange,提问作者smbbb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:05:51