真的,“后端”是服务器上的任何东西。没有网络服务器就不可能有一个网站,而该服务器就是“后端”。它总是在进行某种类的处理,即使它不使用 ASP.NET。
但如果我了解您的要求,您只需要一种将用户名注入其他静态 HTML 文件的方法。
IIS 处理 Windows 身份验证,因此您不需要 ASP.NET 来进行 Windows 身份验证。但从技术上讲,静态意味着静态,因此您不能在提供纯 HTML 文件之前对其进行修改(除非您在 IIS 中更改会减慢实际上静态文件的内容)。
但是,下一个最好的方法是使用 IIS 中称为 Server-Side Include Directives (SSI) 的功能。默认情况下,IIS 设置为通过其 SSI 引擎发送扩展名为 .stm、.stm 和 .shtml 的文件,该引擎处理文件并查找特定的“指令”。
其中一个功能是#echo 指令,它允许您将任何 IIS 服务器变量注入到内容中。如果 Windows 身份验证已启用且正常工作,IIS 会将 DOMAIN\username 存储在 LOGON_USER 服务器变量中。
您可以将其注入您的页面,并使用 JavaScript 将域和用户名拆分为单独的部分。但是您不能将LOGON_USER 直接注入到 JavaScript 中,因为斜线被 JavaScript 解释为转义字符。所以你必须把它放在一个 HTML 元素中,然后用 JS 从那里拉出来。
这是一个简单页面的示例,它将域和用户名存储到 JavaScript 变量中并在页面上显示它们。您必须将此文件另存为 .stm、.stm 或 .shtml。
<html>
<body>
<span id="domainUsername" style="display:none"><!-- #echo var = "LOGON_USER" --></span>
Domain: <span id="domain"></span><br>
Username: <span id="username"></span>
<script>
var domainUsername = document.getElementById("domainUsername").innerText.split("\\");
var domain = domainUsername[0];
var username = domainUsername[1];
document.getElementById("domain").innerText = domain;
document.getElementById("username").innerText = username;
</script>
</body>
</html>
请记住,您的 web.config 中仍然需要 <authentication mode="Windows" />。
然后您也可以为您的网站set that file as the Default Document(因为默认情况下,IIS 不会使用具有这些扩展名的文件作为默认文档)。