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

如何在React中获取Windows当前已认证的登录用户

实现方案说明

首先明确核心前提:
React 是运行在浏览器沙箱环境中的前端框架,没有权限直接调用操作系统级接口获取 Windows 域身份认证的登录用户信息。你之前在 .NET 中使用的 System.Threading.Thread.CurrentPrincipal.Identity.Name 是服务端侧API,运行在服务器环境中,由服务端的IIS/宿主程序完成Windows身份认证后就能直接拿到身份信息,前端无法直接调用这类API。

你可以通过前后端配合的方式实现需求,步骤如下:

  • 第一步:先在后端开发一个简单的接口,专门返回当前认证用户的身份信息。如果是.NET后端直接用你熟悉的代码即可,示例伪代码如下:
// .NET 接口示例
[HttpGet]
[Route("api/getCurrentWindowsUser")]
public IActionResult GetCurrentUser()
{
    var userName = System.Threading.Thread.CurrentPrincipal.Identity.Name;
    return Ok(new { userName = userName });
}

注意该接口需要在服务端配置开启Windows身份认证,关闭匿名访问。

  • 第二步:React 侧在应用初始化阶段调用这个接口,拿到用户名后存储在本地状态/全局上下文里供后续使用,示例代码如下:
import { useState, useEffect } from 'react';

function App() {
  const [currentUser, setCurrentUser] = useState('');

  useEffect(() => {
    fetch('/api/getCurrentWindowsUser', {
      // 必须配置这个参数,请求才会携带Windows认证的凭证信息
      credentials: 'include'
    })
    .then(res => {
      if (!res.ok) throw new Error('身份认证失败');
      return res.json();
    })
    .then(data => setCurrentUser(data.userName))
    .catch(err => console.error('获取用户信息失败:', err));
  }, []);

  return <div>当前登录的Windows用户:{currentUser}</div>;
}
  • 第三步:跨域配置(如果前后端部署在不同域名下)
    后端需要配置允许前端域名跨域访问,同时开启允许携带凭证,否则Windows认证的票据无法正常传递,会导致接口返回401未认证错误。

注意:前端拿到的用户身份仅可用于页面展示使用,所有涉及权限判断、业务逻辑校验的操作必须在后端二次校验,防止前端数据篡改带来的安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:06:03